我正在尝试跨子域共享我的ASP.NET身份Cookie。目前只在当地。
我在两个站点上都有相同的机器密钥,但是在sub1上创建的cookie不在sub2上验证,反之亦然。生成的cookie域总是“.domain.local”(应该是正确的??)
这是我在Startup类中的设置:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/login"),
CookieDomain = ".domain.local",
});
我为每个网站尝试过localhost:siteport,但结果相同(cookie域为空,解析为“localhost”)
我不能为我的生活弄清楚我做错了什么。也许有人可以指出我正确的方向?感谢
更新
好的,所以我发现cookie实际上是在子域之间共享的,但它只在创建cookie的子域上被认为是有效的。需要找到一种方法来了解其他站点上的身份验证失败的原因..
答案 0 :(得分:0)
经过大量的讨论后,我注意到各种Identity包中的版本号不同。我更新了Nuget的各种套餐,你不知道。有效!
让我担心的是它只是从次要版本更新(例如Microsoft.Owin.Security.Cookies从3.0.0.0到3.0.1.0)。我不希望他们必须像以后那样保持一致......
答案 1 :(得分:0)
您需要将Cookie路径设置为./
全局根文件夹。这样,cookie将可用于根目录下的所有站点。