在调用Session.abandon之后需要下一个SessionID

时间:2011-01-25 21:12:52

标签: asp.net session

为了避免会话固定/劫持,我们注意到在验证后为用户创建新的ASP.Net会话的常见建议。听起来很简单。 当用户进行身份验证时,我们调用Session.Abandon()会话ID cookie Response.Cookies.Add(new HttpCookie(“ASP.NET_SessionId”,“”)然后重定向用户。

但是,我们如何知道用户已登录的新页面?我们无法检查会话变量,因为没有,我们刚开始一个全新的会话。

我发誓,虽然我现在找不到,但是在这个网站上,有人解释了如何放弃会话然后获得下一个会话ID。这样您就可以存储该信息。然后在“起始页”上开始一个新会话,该页面可以根据新ID查找旧会话并验证用户是否已登录。

那么,是否有ASP.Net Session类的主人知道如何做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以在用户验证后使用:

  1. 在数据库表中生成一个条目(例如“UserLogins”),该表由例如GUID和DateTime以及用户ID。
  2. 然后将GUID作为URL参数传递给重定向页面
  3. 并在此页面上,阅读URL参数并将其与数据库条目进行比较。
  4. 我在其他独立应用程序之间传递身份验证“令牌”时做了类似的事情,为用户提供了单点登录的体验。

答案 1 :(得分:0)

我很长时间没有这样做,但我目前的实现是放弃登录页面的PageLoad上的会话。

这样,当用户填写登录凭据并单击登录按钮时,您已经在处理新的会话ID。