Axi*_*xus 3 subdomain forms-authentication logout httpcookie asp.net-mvc-4
所以我在URL"mysite.com"上有一个站点,在"subdomain.mysite.com"上有另一个站点.用户帐户存储在"mysite.com"中,因此当我需要登录"subdomain.mysite.com"时,我将用户带到"mysite.com",他们输入他们的凭据正常验证它们并确保验证通过domain在cookie中设置cookie,可以在"subdomain.mysite.com" 中使用cookie,如下所示:
HttpCookie cookie = FormsAuthentication.GetAuthCookie(username, true);
cookie.Domain = ".mysite.com";
Response.Cookies.Add(cookie);
Run Code Online (Sandbox Code Playgroud)
然后我将它们重定向回"subdomain.mysite.com",感谢用户在那里进行身份验证.
一切正常,除了退出时.当用户尝试从任何站点注销时,我按预期删除了身份验证cookie:
FormsAuthentication.SignOut();
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,cookie未被删除,用户仍然保持登录状态.
我试过直接使用Request.Cookies[FormsAuthentication.FormsCookieName]但仍然没有删除cookie .由于某些原因,Chrome非常紧张地坚持使用Cookie:我可以在Chrome的开发者工具中看到它.
我究竟做错了什么?救命!
好的,找到了问题的解决方案.
HttpCookie cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
cookie.Domain = ".mysite.com";
cookie.Expires = DateTime.Now.AddMilliseconds(-1);
Response.Cookies.Add(cookie);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这里发生了两件事:
- 我正在为我正在处理的cookie显式设置域.显然你必须告诉浏览器域上下文,否则它根本找不到cookie.
- 而不是删除cookie,我只是将它过期.
| 归档时间: |
|
| 查看次数: |
2101 次 |
| 最近记录: |