目前我的ASP.Net网络表单使用FormsAuthentication.SignOut();
问题是:
用户进入登录页面并登录并重定向到第A页
在页面A中,他点击了注销并被重定向到
loginpage。
在登录页面加载事件中,我有FormsAuthentication.SignOut()。
我认为这会破坏身份验证cookie。
但是用户仍然可以使用浏览器的后退按钮转到A页面!
这被接受了吗?如果不是最好的解决方法
=============== 我尝试了以下但仍然没有运气:
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
问题本身是重复的,但在另一个问题中没有提供的答案。所以这不是一个有效的答案。
这些也不起作用:
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
FormsAuthentication.SignOut();
Session.Abandon();
还尝试了FormAthentcation.RedirectToLoginPage
仍然后退按钮有效。
更新:我找到了一种解决方法,但只有在浏览器后退按钮导致任何表单/页面事件触发时才会起作用。你知道backbutton是否会触发任何形式的事件吗?
答案 0 :(得分:0)
我花了小时试图找到答案。为了节省寻找答案的未来人的时间,我写下了我的发现。
尝试了所有这些:
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
FormsAuthentication.SignOut();
Session.Abandon();
还尝试FormAthentcation.RedirectToLoginPage
仍然后退按钮有效。原因是后退不会触发任何事件。
还尝试添加元标记,但仍然没有运气。
根据我的研究,问题是所有这些解决方案都试图摆脱缓存,但是浏览器中的后退按钮不会使用它"。
我找到的唯一可行的解决方案是java脚本:(需要将它添加到母版页中才有它)
<script>
function preventBack() { window.history.forward(); }
setTimeout("preventBack()", 0);
window.onunload = function () { null };
</script>