在最新的模板和库中使用了httpsonly标志。如何关闭它?
同样的问题已经过时了,它没有完整的配置示例:
AspNet Core Identity - Cookie 未在生产环境中设置
为了在使用 Identity 时配置应用程序 cookie,您可以在初创公司的ConfigureServices
中使用 ConfigureApplicationCookie
方法:
// add identity
services.AddIdentity<ApplicationUser, IdentityRole>();
// configure the application cookie
services.ConfigureApplicationCookie(options =>
{
options.Cookie.SameSite = SameSiteMode.None;
});
由于 Identity 本质上是在后台添加了 cookie 身份验证,因此配置操作与您在配置 cookie 身份验证时通常会传递给 AddCookie()
的操作相同。只是由于AddIdentity()
负责为您设置身份验证,因此ConfigureApplicationCookie
提供了一种事后调整cookie身份验证选项的方法。
@poke的回答并没有帮助我将值设置为 SameSiteMode.None
,至少在 ASP.NET 核心 2.1 中没有。
在配置应用程序 Cookie 中设置的任何值都将被 Cookie 策略中间件的MinimumSameSitePolicy
设置覆盖。
若要防止覆盖,请将UseCookiePolicy
扩展的MinimumSameSitePolicy
设置为 SameSiteMode.None
。
app.UseCookiePolicy(new CookiePolicyOptions
{
MinimumSameSitePolicy = SameSiteMode.None
});
然后在 ConfigureServices
方法的 AddCookie 扩展中设置实际相同的站点值
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options => options.Cookie.SameSite = SameSiteMode.None;
});
对于我在 asp.net 核心 3.1 中的情况,两件事结合起来就可以解决问题
services.ConfigureApplicationCookie(options =>
{
options.Cookie.SameSite = SameSiteMode.Unspecified;
});
services.AddAntiforgery(opts => {
opts.Cookie.SameSite = SameSiteMode.Unspecified;
});