我在MVC中遇到一个问题,即使在注销后我也可以在浏览器后退按钮上访问上一页。我的方法很少:
1)使用window.history.forward()
禁用浏览器后退按钮。
这将给用户带来糟糕的体验。
2)通过提供outputCacheAttribute
来使用duration=0
,但这将限制服务器端和客户端缓存。所以不想使用它。
3)在global.asax.cs
protected void Application_BeginRequest()
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
}
第三种方法不允许将缓存副本复制到浏览器。另外,为了完成这项工作,我必须在每个控制器上添加 [Authorize]
属性。
这对我来说不是最好的选择,因为我有数百个控制器。明天,如果我要添加新控制器,那么我必须将授权属性装饰到该新控制器。
您是否有任何其他方法可以建议。
答案 0 :(得分:0)
您只能添加此属性:
[OutputCache(NoStore = true, Duration = 0, Location = OutputCacheLocation.None)]
Public ActionResult SomeAction()
{
//
}
我猜想在特定操作中禁用缓存应该足够了。
或者如果你仍然不想破坏几个地方的缓存, 您可以在LOGIN功能中执行此操作,您可以添加以前的属性,或者在有人注销时使用此属性:
Session.Clear();
Session.Abandon();
我希望它会有所帮助,因为我自己没有太多时间进行测试。