删除两个重复密钥ASPXAUTH cookie中的一个。代码有效,但为什么?

时间:2017-09-12 09:21:04

标签: asp.net-mvc asp.net-mvc-4 cookies

我的问题是当我有两个活动网站的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:

  • .ASPXAUTH(Domain:usermanagement.domain.com)
  • .ASPXAUTH(Domain:domain.com)

现在,当管理员停止冒充用户时,我想删除&#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 ;我对上面代码的工作方式很感兴趣。)

0 个答案:

没有答案