虽然我在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");
}
答案 0 :(得分:0)
您需要为整个项目禁用缓存。这是非常糟糕的编程。根本不推荐。
将此下方代码保存在Application_BeginRequest()
文件的Global.asax
内。
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>
请完成此link,有很多方法可以阻止后退按钮使用java脚本。
希望它有所帮助。
答案 1 :(得分:0)
AuthenticationManager.SignOut()
,具体取决于您登录用户的方式。通常这将涵盖所有情况:
AuthenticationManager.SignOut(
DefaultAuthenticationTypes.ExternalCookie,
DefaultAuthenticationTypes.ApplicationCookie,
DefaultAuthenticationTypes.TwoFactorCookie,
DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie,
DefaultAuthenticationTypes.ExternalBearer);
无需FormsAuthentication.SignOut()
- 这不会做任何事情。除非你自己使用过,否则不需要放弃会话 - Identity不会在会话中添加任何内容。