无法强制注销 ASP.NET 标识



虽然我在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() - 这不会做任何事情。也不需要放弃会话,除非您自己使用它 - 标识不会将任何东西放入会话中。

相关内容

  • 没有找到相关文章

最新更新