对于使用表单身份验证的ASP.NET Web应用程序,我在Global.asax
中添加了以下代码,以便在会话到期时将用户注销:
void Session_Start(object s, EventArgs e)
{
if (Request.IsAuthenticated)
{
FormsAuthentication.SignOut();
/* cache clean up code */
FormsAuthentication.RedirectToLoginPage();
}
}
这是为了防止由于在预先存在的代码中未经检查使用Session
变量而导致的问题。但是我注意到,只要会话在用户未登录时到期,代码就会阻止成功登录,不断将用户重定向到登录页面。问题似乎在于会话cookie保持设置并且不允许会话更新,因为删除它会重新启用正常登录。编辑会话cookie的值也会导致登录循环。
答案 0 :(得分:0)
我找到了解决上述问题的方法。追加:
else
Session.Add("dummy", 0);
解决了这个问题,虽然看起来确实有点不正统。似乎空会话无法在会话cookie中更新会话ID。