NET 6下ASP.NET Core Razor Pages报Scheme already exists: Cookies错误求助
问题原因
你手动调用AddCookie注册了名为Cookies的认证方案,但AddMicrosoftIdentityWebApp(微软身份验证库)内部已经默认注册了同名的Cookie认证方案,导致方案重复冲突。
修正后的配置代码
直接通过ConfigureCookie方法修改微软身份验证库自带的Cookie方案配置,无需单独调用AddCookie:
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(options => { builder.Configuration.GetSection("AzureAd").Bind(options); options.NonceCookie.SecurePolicy = CookieSecurePolicy.Always; options.CorrelationCookie.SecurePolicy = CookieSecurePolicy.Always; }) // 配置默认Cookie认证方案的选项 .ConfigureCookie(options => { options.ExpireTimeSpan = TimeSpan.FromSeconds(1); }) .EnableTokenAcquisitionToCallDownstreamApi(initialScopes) .AddMicrosoftGraph(builder.Configuration.GetSection("DownstreamApi")) .AddInMemoryTokenCaches(); builder.Services.AddRazorPages() .AddRazorPagesOptions(options => { options.Conventions.AuthorizeFolder("/"); }) .AddMicrosoftIdentityUI();
注销代码优化
你的注销代码无需手动删除Cookie,调用SignOutAsync已经会自动清除对应认证Cookie,建议修改为:
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); await HttpContext.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme);
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

