虽然我在LogOff方法中尝试了以下一些方法,但用户可以在从系统注销后使用浏览器的"返回"按钮登录。强制注销 ASP.NET 具有 ASP.NET 身份的 MVC 的最聪明方法是什么?
public ActionResult LogOff()
{
AuthenticationManager.SignOut();
//I added these lines extra in order to force logout
FormsAuthentication.SignOut();
Session.Clear();
Session.Abandon();
Session.RemoveAll();
//
return RedirectToAction("Index", "Home");
}
您需要为整个项目禁用缓存。这是非常糟糕的编程。完全不推荐。
将此波纹管代码保存在Global.asax
文件的Application_BeginRequest()
内。
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
或者,您可以使用java脚本来清理缓存,以防止"后退"按钮,例如波纹管,
<script>
function ClearHistory()
{
var backlen = history.length;
history.go(-backlen);
window.location.href = loggedOutPageUrl //Pass your Index Page
}
</script>
请通过此链接,有很多方法可以防止使用java脚本的后退按钮。
希望对您有所帮助。
AuthenticationManager.SignOut()
需要使用参数调用,具体取决于您登录用户的方式。通常,这将涵盖所有情况:
AuthenticationManager.SignOut(
DefaultAuthenticationTypes.ExternalCookie,
DefaultAuthenticationTypes.ApplicationCookie,
DefaultAuthenticationTypes.TwoFactorCookie,
DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie,
DefaultAuthenticationTypes.ExternalBearer);
无需FormsAuthentication.SignOut()
- 这不会做任何事情。也不需要放弃会话,除非您自己使用它 - 标识不会将任何东西放入会话中。