AddAuthentication 对 Aspnet Core 3.1 中的 AddDefaultIdentity 造成严重破坏
AddAuthentication causes havoc with AddDefaultIdentity in Aspnet Core 3.1
我创建了一个带有本地标识存储的 aspnet 核心网站。
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
工作正常。然后我按照手册添加了社交认证,效果很好。
接下来我添加了 api 身份验证,如 Xamarin.Essentials 文档中所述。它声明在进行社交身份验证之前,我必须执行 AddAuthentication。
services.AddAuthentication(o =>
{
o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
}).AddCookie();
当我添加这些行时,工作登录不再有效。这些页面看起来可以正常工作,但用户永远不会处于登录状态。
当我添加身份验证时,AddDefaultIdentity 会发生什么?
您的应用程序中只能有一个默认 身份验证方案。 AddDefaultIdentity
正在添加 cookie 身份验证作为默认身份验证方案,这就是 Identity 所使用的。
当您为 API 添加新的身份验证时,您将在此处覆盖 DefaultScheme
o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
,这是 Identity 所使用的。
如果您想要一个新的 API 身份验证方案,您应该只添加身份验证而不设置默认身份验证并为其命名,
services.AddAuthentication()
.AddCookie("A_NEW_SCHEME_NAME", ... );
并在 controllers/actions 上为此身份验证方案添加 AuthorzieAttribute
。
[Authorize(AuthenticationSchemes = "A_NEW_SCHEME_NAME")]
我创建了一个带有本地标识存储的 aspnet 核心网站。
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
工作正常。然后我按照手册添加了社交认证,效果很好。
接下来我添加了 api 身份验证,如 Xamarin.Essentials 文档中所述。它声明在进行社交身份验证之前,我必须执行 AddAuthentication。
services.AddAuthentication(o =>
{
o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
}).AddCookie();
当我添加这些行时,工作登录不再有效。这些页面看起来可以正常工作,但用户永远不会处于登录状态。
当我添加身份验证时,AddDefaultIdentity 会发生什么?
您的应用程序中只能有一个默认 身份验证方案。 AddDefaultIdentity
正在添加 cookie 身份验证作为默认身份验证方案,这就是 Identity 所使用的。
当您为 API 添加新的身份验证时,您将在此处覆盖 DefaultScheme
o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
,这是 Identity 所使用的。
如果您想要一个新的 API 身份验证方案,您应该只添加身份验证而不设置默认身份验证并为其命名,
services.AddAuthentication()
.AddCookie("A_NEW_SCHEME_NAME", ... );
并在 controllers/actions 上为此身份验证方案添加 AuthorzieAttribute
。
[Authorize(AuthenticationSchemes = "A_NEW_SCHEME_NAME")]