我正在使用所有默认成员代码运行 ASP.NET MVC 4。 AccountController的LogOff的代码是:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
WebSecurity.Logout();
return RedirectToAction("Index", "Home");
}
我注意到这段代码不会破坏会话,这意味着如果我使用一个帐户登录,将某些内容保存到会话中,然后注销并在同一 Web 浏览器实例中使用不同的帐户登录,我仍然可以看到前一个用户的会话。
不知道为什么会发生这种情况。任何建议将不胜感激。谢谢。
会话和身份验证会话不是一回事。
在这里,您破坏了用户的身份验证,但确实重新启动了 ASP.NET 会话。
更多解释在这里:https://stackoverflow.com/a/1306932/971693 https://stackoverflow.com/a/1306932/971693
尝试这样做:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
WebSecurity.Logout();
Session.Abandon();
// clear authentication cookie
HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
cookie1.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie1);
// clear session cookie (not necessary for your current problem but i would recommend you do it anyway)
HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
cookie2.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie2);
return RedirectToAction("Index", "Home");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)