【问题标题】:C# ASP.NET MVC Back button issue after logout注销后 C# ASP.NET MVC 后退按钮问题
【发布时间】:2018-08-03 07:06:46
【问题描述】:

我正在研究 MVC 应用程序的注销方法,但遇到了问题。 每次我注销时,应用程序都会检查用户身份验证并将其返回到登录页面。

注销方法:

[HttpGet]
    [CustomAuthorize]
    public ActionResult Logout()
    {            
        //Response.Cache.SetExpires(DateTime.Now);
        FormsAuthentication.SignOut();
        Session.Clear();
        Session.Abandon();
        Session.RemoveAll();
        return RedirectToAction("Index", "Home");
    }

登录后使用的页面都有[CustomAuthorize]属性。

使用 MS Edge 浏览器,如果我单击“后退”按钮,程序会执行 CustomAuthorize 方法,如果用户已注销,它只会按预期将用户返回到登录页面。

但是,如果我使用任何其他浏览器(Chrome、Firefox),按“后退”按钮只会返回到我按“注销”按钮的上一页,甚至无需通过 CustomAuthorize 来检查授权。

这可能是什么原因以及解决此问题的可能解决方案是什么?

如果需要更多信息,请告诉我。

谢谢。

贾斯塔斯

【问题讨论】:

  • 当您按下返回按钮时,页面正在从缓存中呈现。它不会通过您的CustomAuthorize
  • @AmitKumar 那么为什么它不是 MS Edge 的问题,它通过CustomAuthorize 呢?

标签: c# asp.net model-view-controller logout back-button


【解决方案1】:

您需要全局禁用缓存

protected void Application_BeginRequest()
    {
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
        Response.Cache.SetNoStore();
    }

【讨论】:

  • 全局禁用缓存是我无法接受的解决方法,因为它只是一种解决方法。当我按下执行注销的注销按钮时,有没有办法禁用缓存并重新启用它?我得到一个提示,这种操作可能会在注销后清除缓存,这将阻止通过返回按钮返回上一页
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多