【问题标题】:Logout still access to authorize page when click on browser back button单击浏览器后退按钮时注销仍可访问授权页面
【发布时间】:2019-09-16 13:19:42
【问题描述】:

我有一个登录和注销方法,记住我。从“索引”页面(授权)注销后,我仍然可以使用浏览器的(Chrome)后退箭头返回“索引”。这是因为记得我吗?如何完全退出我的网站?

即使选中或未选中记住我,也会发生这种情况。我尝试清除浏览器缓存和历史记录。

    [HttpPost]
    public ActionResult Login(LoginModel loginModel)
    {
        User user = db.Users.Where(u => u.Username.Equals(loginModel.Username) && u.Password.Equals(loginModel.Password)).FirstOrDefault();
        if (user != null)
        {
            FormsAuthentication.SetAuthCookie(user.UserPkID.ToString(), loginModel.RememberMe);
            return RedirectToAction("Index", "Home");
        }
        else
        {
            return View();
        }
    }

    [HttpGet]
    public ActionResult Logout()
    {
        FormsAuthentication.SignOut();
        return RedirectToAction("Login");
    }

【问题讨论】:

  • 注销后返回,是否仍能像登录时一样与网站交互? (例如,logout > back > do_some_action_requiring_authentication)我问这个是因为我怀疑您的浏览器可能会在您返回时显示该站点的缓存副本。
  • @Kei 当我退出后返回时,我无法执行任何操作,当我执行某些操作时我到达了登录页面。
  • 啊,好吧,在这种情况下,您的注销似乎没问题,问题在于浏览器处理历史记录的方式。您可以在下面尝试 Muhammad Aftab 的回答(但请注意,它会阻止用户使用后退按钮)或上面 Hari Hara Chandan 建议的链接中的解决方案之一。

标签: c# asp.net-mvc


【解决方案1】:

不,这不是因为记住我。

您必须在 pushState 中推送您的 url 并清除浏览器历史记录:

试试这个:

$(document).ready(function() {
        window.history.pushState(null, "", window.location.href);        
        window.onpopstate = function() {
            window.history.pushState(null, "", window.location.href);
        };
    });

检查这里: Disable Back Button in Browser using jquery?

【讨论】:

    【解决方案2】:

    Application_Start() 函数内部public class MvcApplication : System.Web.HttpApplication{} 之后添加这个块在Global.asax 之后

    public class MvcApplication : System.Web.HttpApplication
     {
     // Application_Start() and other functions
    
       protected void Application_BeginRequest()
        {
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
            Response.Cache.SetNoStore();
        }
    
      }
    

    【讨论】:

    • 谢谢,它对我有用。但是当我点击后退按钮 2 或 3 次时。用户名出现在登录表单中。正常吗?可以向其他人显示某人的用户名吗?抱歉,我问这个是因为我对开发领域很陌生,这是我的第一个项目。
    • @THA 因为您已经在浏览器中保存了用户名和密码。您必须通过浏览器现金清除来清除
    • 在投反对票时,请说明背后的原因.. 没有任何澄清有人在这样做!要么你必须为此提供更好的解决方案。
    • @THA 不是你!其他人。很乐意为您提供帮助
    猜你喜欢
    • 2013-11-08
    • 2016-01-20
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2014-05-13
    • 2012-07-09
    • 2022-01-09
    • 2015-04-21
    相关资源
    最近更新 更多