AspNet核心身份,如何设置options.Cookie.SameSite?

Fre*_*ice 9 c# asp.net-identity asp.net-core

在最新的模板和库中使用了httpsonly标志.我怎么能把它关掉?

同样的问题已经过时,它没有完整的配置示例:

AspNet核心身份 - cookie未在生产中设置

Par*_*rag 11

@poke的答案并没有帮我设置值SameSiteMode.None,至少在ASP.NET核心2.1中没有.

您在配置应用程序cookie中设置的任何值都会被cookie策略中间件MinimumSameSitePolicy设置覆盖.

这会阻止覆盖,MinimumSameSitePolicyUseCookiePolicy扩展名设置为SameSiteMode.None.

app.UseCookiePolicy(new CookiePolicyOptions
{
   MinimumSameSitePolicy = SameSiteMode.None
});
Run Code Online (Sandbox Code Playgroud)

然后在ConfigureServices方法的AddCookie扩展中设置实际相同的站点值

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
    options => options.Cookie.SameSite = SameSiteMode.None;
});
Run Code Online (Sandbox Code Playgroud)


pok*_*oke 9

为了在使用Identity时配置应用程序cookie,您可以在Startup中使用该ConfigureApplicationCookie方法ConfigureServices:

// add identity
services.AddIdentity<ApplicationUser, IdentityRole>();

// configure the application cookie
services.ConfigureApplicationCookie(options =>
{
    options.Cookie.SameSite = SameSiteMode.None;
});
Run Code Online (Sandbox Code Playgroud)

由于Identity本质上是在底层添加cookie身份验证,因此配置操作与AddCookie()配置cookie身份验证时通常会传递的内容相同.只是因为AddIdentity()负责为您设置身份验证,ConfigureApplicationCookie提供了一种方法来调整cookie身份验证选项.