ASP.NET MVC 4跨子域身份验证.无法退出

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的开发者工具中看到它.

我究竟做错了什么?救命!

Axi*_*xus 6

好的,找到了问题的解决方案.

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,我只是将它过期.