Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 阻止用户在注销后返回上一个安全页面_C#_Asp.net Mvc - Fatal编程技术网

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

C# 阻止用户在注销后返回上一个安全页面,c#,asp.net-mvc,C#,Asp.net Mvc,我在MVC中遇到了一个问题,即即使在注销后,我仍然可以在浏览器上单击“后退”按钮访问上一页。我有几种方法: 1) 使用window.history.forward()禁用浏览器后退按钮。 这将带来糟糕的用户体验 2) 通过提供duration=0使用outputCacheAttribute,但这将限制服务器端和客户端缓存。所以我不想用这个 3) 在global.asax.cs protected void Application_BeginRequest() { Response.Cac

我在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()
 {
    //
 }
我想,在特定操作中禁用缓存应该足够了

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


我希望它能有所帮助,因为我自己并没有太多时间来测试它。

否决票似乎是不公平的,合理的问题。在网上银行应用程序和支付提供商(如Worldpay)中,我有时会后退,看到一条消息说“请不要后退,单击此处重新开始”,找到解决方案了吗?目前正在使用javascript解决方案。您好,建议的方法不起作用。我不想禁用捕捉功能。让我知道是否有其他方法可以达到同样的效果。
       Session.Clear();
       Session.Abandon();