ASP.NET 身份 cookie 和子域

ASP.NET Identity cookie and subdomains

我正在尝试跨子域共享我的 ASP.NET 身份 cookie。目前仅在本地。

我在两个站点上都有相同的机器密钥,但是在 sub1 上创建的 cookie 在 sub2 上无法验证,反之亦然。生成的 cookie 域始终为“.domain.local”(应该是正确的??)

这是我在启动时的设置 class:

app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/login"),
            CookieDomain = ".domain.local",
        });

我已经为每个站点尝试了 localhost:siteport,但结果相同(cookie 域空白,解析为 "localhost")

我这辈子都弄不明白我做错了什么。也许有人可以指出我正确的方向?谢谢

更新

好的,所以我发现 cookie 实际上是在子域之间共享的,但它只在创建 cookie 的子域上被认为有效。需要找到一种方法来了解为什么在其他站点上验证失败..

经过一番摸索之后,我注意到各种身份包的版本号不同。我从 Nuget 更新了各种包,你不知道吗?有效!

让我担心的是它只从次要版本更新(例如 Microsoft.Owin.Security.Cookies 从 3.0.0.0 到 3.0.1.0)。我不希望他们将来必须像那样保持一致..

您需要将 Cookie 路径设置为 ./ 全局根文件夹。这样 cookie 将对根目录下的所有站点可用。