我的问题是当我有两个活动网站的ASPXAUTH cookie时,如何从特定域中删除ASPXAUTH cookie。
设置:
我有两个网站:usermanagement.domain.com和shop.domain.com
关于用户"用户管理"网站,管理员可以模拟存在于" shop"。
上的用户登录&#34; usermanagement&#34;时,会为usermanagement.domain.com网站创建一个ASPXAUTH cookie。 模拟用户时,会为.domain.com域创建另一个ASPXAUTH cookie。 (这实际上也是对shop.domain.com上的用户进行身份验证。它的工作方式是这样的,因为usermanagement.domain.com无法为shop.domain.com创建cookie - 因此,使用共享的.domain.com代替。)< / p>
这意味着当管理员模拟用户时,存在以下两个ASPXAUTH cookie:
现在,当管理员停止冒充用户时,我想删除&#34; .domain.com&#34; ASPXAUTH cookie。以下代码实现了我的目标:
if (Request.Cookies.AllKeys.Contains(".ASPXAUTH"))
{
var domain = _configurationService.GetB2BSettings().BackOfficeAndImpersonationDomain;
var impersonationCookie = new HttpCookie(".ASPXAUTH")
{
Domain = domain,
Expires = DateTime.Now.AddDays(-1)
};
Response.Cookies.Add(impersonationCookie);
}
return Redirect(homeUrl);
这就是我有种类的地方&#34;它有效,但我不知道为什么&#34; -moment。上面的代码删除了.ASPXAUTH与&#34; .domain.com&#34;域。另一个ASPXAUTH cookie可以存活。
我的问题是:这是如何运作的?
此时摘录中创建的新cookie此时未合并到请求Cookie中。事实上,在执行重定向之前,请求包含3个.ASPXAUTH cookie(两个原始ASPXAUTH cookie,以及新添加的cookie)。
(旁注:我知道此设置不一定理想或直观,但由于任务范围,我现在不打算更改域/网站设置。我&#39 ;我对上面代码的工作方式很感兴趣。)