R4c*_*OOn 8 asp.net authentication cookies internet-explorer
我正在使用ASP身份验证和集成的Web服务.
用户在登录页面上使用Forms身份验证登录.
要注销,我从Silverlight调用身份验证Web服务并调用logout.
一切都运行正常,但现在有时IE变得疯狂,不再登出用户.
我使用了Fiddler,事实证明,身份验证服务返回一个SetCookie来清除ASPXAUTH cookie,但在下一次调用时,IE仍然设置了cookie.
所以当然因为cookie在那里用户经过身份验证并重新登录而不是被定向到登录页面.
我检查过,没有看到任何其他问题的描述.我无法重现它,我的同事有一个行为不端的IE使它在一个环境中工作正常,而在另一个环境中没有(一个有DEV的问题而另一个有PreProd服务器的问题).
知道可能会发生什么吗?
我遇到了这个问题,为了确保用户被注销,现在我使用以下代码:
FormsAuthentication.SignOut();
// Drop all the information held in the session
Session.Clear();
Session.Abandon();
// clear authentication cookie
HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
cookie1.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie1);
// clear session cookie
HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
cookie2.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie2);
// Redirect the user to the login page
Response.Redirect("YourLoginPage.aspx", true);
Run Code Online (Sandbox Code Playgroud)
为了避免此问题,当您进行 SignOut 时,下一次调用必须使用 Redirect(pageLogOut, true ); 并停止任何其他活动,直到其完全重定向。参数true非常重要。
调用 SignOut() 后,您必须强制浏览器刷新 cookie 数据,因为如果出于任何原因再次验证请求 cookie,那么 cookie 会获得更多的生存时间,并且不会按照您的要求从浏览器中删除它退出命令。
因此,注销后,重定向到页面 - 或者确保将 cookie 刷新到浏览器,并且在 cookie 完全写入浏览器之前不再询问任何与用户身份验证有关的内容。
希望这有帮助。
| 归档时间: |
|
| 查看次数: |
9999 次 |
| 最近记录: |