防止用户登出后返回到以前的安全页面

本文关键字:安全 返回 用户 | 更新日期: 2023-09-27 18:08:00

我在MVC中面临一个问题,我能够访问浏览器后退按钮点击上一页,即使注销后。我有几个方法:

1)使用window.history.forward()禁用浏览器返回按钮。这将给糟糕的用户体验。

2)通过提供duration=0来使用outputCacheAttribute,但这将限制服务器端和客户端缓存。所以我不想用这个

3) global.asax.cs

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

第三种方法不允许将缓存复制到浏览器中。此外,为了使这项工作,我必须在每个控制器上添加 [Authorize] 属性。这对我来说不是最好的选择,因为我有数百个控制器。如果明天我要添加一个新的控制器,那么我必须再次装饰Authorize属性给这个新控制器。

还有其他方法吗?

防止用户登出后返回到以前的安全页面

你只能添加这个属性:

 [OutputCache(NoStore = true, Duration = 0, Location = OutputCacheLocation.None)]
 Public ActionResult SomeAction()
 {
    //
 }

我想在特定的操作中禁用缓存应该足够了。

或者,如果你仍然不想破坏缓存的几个地方,你可以在LOGIN函数中这样做,你可以添加previous Attribute,或者只在有人退出时使用:

       Session.Clear();
       Session.Abandon();

我希望它会有帮助,因为我没有太多的时间来测试它。