Asp.net MVC4:注销和浏览器';s";“后退”-作用

Asp.net MVC4:注销和浏览器';s";“后退”-作用,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,当用户单击“注销”时,将成功调用以下(标准)操作: [HttpPost] [ValidateAntiForgeryToken] public ActionResult LogOff() { WebSecurity.Logout(); return RedirectToAction("Login", "Account"); } 用户将被重定向到登录页面 但是,当在浏览器中单击“后退”时,用户仍然可以看到他/她仍然登录的最后

当用户单击“注销”时,将成功调用以下(标准)操作:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult LogOff()
    {
        WebSecurity.Logout();

        return RedirectToAction("Login", "Account");
    }
用户将被重定向到登录页面

但是,当在浏览器中单击“后退”时,用户仍然可以看到他/她仍然登录的最后一页。如果他/她尝试执行某个操作,则用户将成功重定向到登录页面,因为他不再被授权


是否有任何方法可以通过单击浏览器中的“后退”来防止已注销的用户看到授权内容?我的每个控制器都已具有[授权]属性。谢谢你的意见

如果您使用的是表单身份验证,那么下面是您的答案


如果您使用的是表单身份验证,那么下面是您的答案


事实上,没有,因为他们在浏览器中看到的是页面的缓存版本。我想,你可以试着用JavaScript捕捉后台导航事件,但我倾向于发现这种做法非常烦人,而且也不难避免


正如您所说,当用户尝试执行任何操作时,他们将被迫再次进行身份验证,因此他们实际上不会看到任何他们尚未了解的内容,因此真正的问题是,是否有理由花时间修复可能不存在的问题。

实际上,没有,因为他们看到的是浏览器中页面的缓存版本。我想,你可以试着用JavaScript捕捉后台导航事件,但我倾向于发现这种做法非常烦人,而且也不难避免

正如您所说,当用户尝试执行任何操作时,他们将被迫再次进行身份验证,因此他们在后台导航中确实看不到任何他们不知道的内容,因此真正的问题是,是否有理由花时间修复可能不存在的问题。

是的,您可以这样做

您需要根据需要在母版页或.aspx页面上添加一个小javascript函数

<script type="text/javascript">
    window.history.forward();
    function noBack() { window.history.forward(); }
</script>

window.history.forward();
函数noBack(){window.history.forward();}
在页面主体上,您可以添加

 <body onload="noBack();" onpageshow="if (event.persisted) noBack();" onunload="">

若用户按下页面上的后退按钮,他将被发送到当前页面。当history.forward代码将用户推回到当前页面时。因此,用户将无法返回

希望能有所帮助。

是的,你可以做到

您需要根据需要在母版页或.aspx页面上添加一个小javascript函数

<script type="text/javascript">
    window.history.forward();
    function noBack() { window.history.forward(); }
</script>

window.history.forward();
函数noBack(){window.history.forward();}
在页面主体上,您可以添加

 <body onload="noBack();" onpageshow="if (event.persisted) noBack();" onunload="">

若用户按下页面上的后退按钮,他将被发送到当前页面。当history.forward代码将用户推回到当前页面时。因此,用户将无法返回


希望它能有所帮助。

不允许缓存授权页面。有关此主题还有更多问题,请尝试搜索。我有点类似,可能会帮助你。不让授权页面被缓存。有关此主题还有更多问题,请尝试搜索。我有点类似,可能会帮助你。