C# 阻止用户在注销后返回上一个安全页面
我在MVC中遇到了一个问题,即即使在注销后,我仍然可以在浏览器上单击“后退”按钮访问上一页。我有几种方法: 1) 使用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
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();