【发布时间】:2015-04-18 00:12:24
【问题描述】:
目前我的 ASP.Net 网络表单使用 FormsAuthentication.SignOut();
问题是这样的:
用户进入登录页面并登录并被重定向到页面 A
在页面 A 中,他点击注销并被重定向到
登录页面。
在登录页面加载事件中,我有 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
后退按钮仍然有效。
更新:我找到了一种解决方法,但它仅在浏览器后退按钮导致任何表单/页面事件被触发时才有效。你知道后退按钮是否会触发任何表单事件吗?
【问题讨论】:
-
如果您单击返回按钮,您将转到页面 A。一旦刷新页面并检查它是页面 A 还是登录页面。在我看来,单击返回按钮显示经过身份验证的页面根本不好练习。
-
但这似乎很标准。看看 gmail 例如。如果用户注销,然后单击返回按钮,他将停留在登录页面。
-
@MikeCole “担心浏览器历史记录和后退按钮会让你头疼和生殖器疣” - 哈哈
-
@SNash 你在这里看过答案吗:stackoverflow.com/questions/16337149/… 提到你可能必须在某个事件处理程序中这样做。