忽略先前使用Cookie.Domain

时间:2018-07-02 10:28:07

标签: c# asp.net cookies owin

让我们想象一下,我们使用带有cookie domain的OWIN Application Cookie来创建一个Web版本。

我们的配置行如下所示:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    CookieDomain = "whatever"
    ... 
}

因此,根据文档:

  

提供Cookie的域名。默认情况下,这是   请求的主机名。浏览器仅将Cookie发送到   请求匹配的主机名。您可能希望将其调整为   适用于您域中任何主机的Cookie。例如,将    .contoso.com 的cookie域使 contoso.com 可以使用它,    www.contoso.com 和s taging.www.contoso.com

一旦用户登录,cookie就会创建并在注销时过期。到目前为止一切顺利。

现在,如果我们决定不再使用Cookie.Domain,我们将面临一个问题。我们要使用主机名,因此只需注释CookieDomain属性。 我们的配置行如下所示:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 

    // CookieDomain = "whatever"
    ...
}

这是全局情况:

  • 该应用程序正在使用Cookie.Domain。
  • 用户登录。不要注销。
  • 部署了不使用Cookie.Domain的新版本。
  • 用户进入网站。以前的cookie仍然有效,因此不需要登录。

如果此时我在浏览器中检查了cookie,则看到2个cookie,而不仅仅是一个:

  1. 使用Cookie.Domain创建的第一个Cookie
  2. 在不使用Cookie的情况下创建的新cookie。域:即使用请求的主机名。

我的第一个问题是:为什么要创建一个新的cookie而不使用前一个cookie?

这是我们的第二个主要问题:

  • 用户注销
  • 新的主机名cookie过期。正确。
  • 使用Domain.Cookie的第一个cookie仍然仍然有效 !!!

那怎么可能? 您知道解决这种情况的任何方法吗?

谢谢!

0 个答案:

没有答案