对于使用表单身份验证的 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 的值也会导致登录循环。