经过一番研究,我想测试跨域身份验证,似乎
SameSite
身份验证cookie应设置为无,如下所示:
options.Cookie.SameSite = SameSiteMode.None;
问题是,当我将
SameSite
设置为 none 时,应用程序无法创建身份验证 cookie,但如果将其设置为 Lax 或 strict 则可以正常工作。
这是我的代码
program.cs
:
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.Cookie.Name = "authen";
options.Cookie.HttpOnly = true;
options.Cookie.SecurePolicy = CookieSecurePolicy.None;
options.Cookie.SameSite = SameSiteMode.None;
options.Cookie.Path = "/";
options.Cookie.Domain = "localhost";
});
更新
经过一些测试,似乎这只发生在 Google Chrome 中,并且在 Firefox 上运行良好。
将此行代码更改为
options.Cookie.SecurePolicy = CookieSecurePolicy.None;
到
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
并且有效。