当用户点击“注销”时,会成功调用以下(标准)操作:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
WebSecurity.Logout();
return RedirectToAction("Login", "Account");
}
用户被重定向到登录页面。
但是,当在浏览器中单击“返回”时,用户仍然可以看到他/她仍然登录的最后一页。如果他/她然后尝试执行操作,则用户成功重定向到登录页面,因为他不再被授权。
有什么方法可以通过点击浏览器中的“返回”来阻止已注销的用户查看授权的内容吗?我的每个控制器都有[授权]属性。感谢您的投入!
答案 0 :(得分:2)
实际上,不,因为他们所看到的是浏览器中页面的缓存版本。我想,你可以尝试使用JavaScript来捕获后导航事件,但我倾向于发现这种做法非常烦人,而且并不是那么难以规避。
正如您所说,当用户尝试执行任何操作时,他们会被迫再次进行身份验证,因此他们确实没有看到任何他们尚未知晓的反向导航,所以真正的问题是如果有理由花时间来解决可能不是问题的问题。
答案 1 :(得分: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代码将用户推回到当前页面。因此用户将无法返回。
希望它会有所帮助。
答案 2 :(得分:0)
如果您正在使用表单身份验证,那么以下内容就是您的答案。