C# 为什么ASP.NET核心标识Cookie不能跨域工作?
我在ASP.NET核心标识中设置了一些cookie选项,以包括两个子域:C# 为什么ASP.NET核心标识Cookie不能跨域工作?,c#,asp.net-core,cookies,asp.net-core-identity,C#,Asp.net Core,Cookies,Asp.net Core Identity,我在ASP.NET核心标识中设置了一些cookie选项,以包括两个子域: services.ConfigureApplicationCookie(identityOptionsCookies => { identityOptionsCookies.Cookie.Domain = ".example.com"; identityOptionsCookies.Cookie.Name = &quo
services.ConfigureApplicationCookie(identityOptionsCookies =>
{
identityOptionsCookies.Cookie.Domain = ".example.com";
identityOptionsCookies.Cookie.Name = "ExampleToken";
});
基于此配置,我通过此子域登录:
api.accounts.example.com
我使用以下API调用检查我是否经过身份验证:
api.accounts.example.com/identity/isAuthenticated => returns true
现在,我转到另一个子域,使用Startup.cs的相同配置,我不再经过身份验证:
api.user.example.com/teacher/list => redirects me to /Accounts/Login
为什么会这样?identityoptions cookies.Cookie.Domain=“*.example.com” identityoptioncookies.Cookie.Domain=“*.example.com” 您提供的代码应符合文档要求:-问题:a)cookie在浏览器中的外观如何?所有cookie设置都正确吗?b) cookie请求是否发送到api.accounts.example.com?c) 这两个域是相同的应用程序实例还是单独的部署?(如果分开:数据保护是如何配置的?@ChristophLütjen,cookie的外观是什么意思?Cookie在请求中发送回API,我可以通过调试
HttpContext.request.Cookies
来验证它。这些是跨不同服务器的单独部署。如果您已验证对api.user.example.com的请求是否包含正确的cookie,我想问题在于它正在不同的服务器上运行。Identity将在api.accounts的本地文件系统中创建一个票证,因此api.user无法找到此票证。有关如何将其配置为与多台服务器一起工作的详细信息,请参阅。您提供的代码应根据文档工作:-问题:a)cookie在浏览器中的外观如何?所有cookie设置都正确吗?b) cookie请求是否发送到api.accounts.example.com?c) 这两个域是相同的应用程序实例还是单独的部署?(如果分开:数据保护是如何配置的?@ChristophLütjen,cookie的外观是什么意思?Cookie在请求中发送回API,我可以通过调试HttpContext.request.Cookies
来验证它。这些是跨不同服务器的单独部署。如果您已验证对api.user.example.com的请求是否包含正确的cookie,我想问题在于它正在不同的服务器上运行。Identity将在api.accounts的本地文件系统中创建一个票证,因此api.user无法找到此票证。有关如何将其配置为与多台服务器一起工作的详细信息,请参阅。