注销后阻止用户返回上一个安全页面

时间:2015-08-14 11:53:04

标签: c# asp.net-mvc

我在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] 属性。 这对我来说不是最好的选择,因为我有数百个控制器。明天,如果我要添加新控制器,那么我必须将授权属性装饰到该新控制器。

您是否有任何其他方法可以建议。

1 个答案:

答案 0 :(得分:0)

您只能添加此属性:

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

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

  

或者如果你仍然不想破坏几个地方的缓存,   您可以在LOGIN功能中执行此操作,您可以添加以前的属性,或者在有人注销时使用此属性:

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

我希望它会有所帮助,因为我自己没有太多时间进行测试。