AspNet Core Identity,如何设置选项.Cookie.SameSite.



在最新的模板和库中使用了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;
        });

最新更新