ASP.NET标识cookie和子域



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

  • sub1.domain.local
  • sub2域本地

我在两个站点上都有相同的机器密钥,但在sub1上创建的cookie不会在sub2上验证,反之亦然。生成的cookie域总是".domain.local"(哪个应该是正确的??)

这是我在启动类中的设置:

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

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

我一辈子都搞不清楚自己做错了什么。也许有人能给我指明正确的方向?感谢

更新

好吧,我已经发现cookie实际上是在子域之间共享的,但它只在创建cookie的子域上有效。需要找到一种方法来了解身份验证在其他站点失败的原因。。

经过大量的headcratching,我注意到各种Identity包的版本号存在差异。我更新了Nuget的各种软件包,你不知道吗。成功了!

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

您需要将Cookie Path设置为./全局根文件夹。这样,根目录下的所有站点都可以使用cookie。

相关内容

  • 没有找到相关文章

最新更新