0

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

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

        return RedirectToAction("Login", "Account");
    }

用户被重定向到登录页面。

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

有什么方法可以通过在浏览器中单击“返回”来阻止已注销的用户查看授权内容?我的每个控制器都已经具有 [Authorize] 属性。谢谢您的意见!

4

3 回答 3

2

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

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

于 2013-06-05T07:56:57.010 回答
1

是的,你可以这么做

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

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

在页面正文上,您可以添加

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

如果用户在页面上按下返回按钮,他将被发送到当前页面。因为 history.forward 代码将用户推回到当前页面。因此用户将无法返回。

希望它会有所帮助。

于 2013-06-05T08:46:32.730 回答
0

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

浏览器后退按钮的注销问题

于 2013-06-05T07:56:51.733 回答