防止用户登出后返回到以前的安全页面
本文关键字:安全 返回 用户 | 更新日期: 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();
我希望它会有帮助,因为我没有太多的时间来测试它。