【问题标题】:AddAuthentication causes havoc with AddDefaultIdentity in Aspnet Core 3.1AddAuthentication 在 Aspnet Core 3.1 中对 AddDefaultIdentity 造成严重破坏
【发布时间】:2020-05-01 19:31:06
【问题描述】:

我创建了一个带有本地身份存储的 aspnet 核心网站。

services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
                .AddEntityFrameworkStores<ApplicationDbContext>();

工作得很好。然后我按照手册添加了社交认证,效果很好。

接下来,我添加了 Xamarin.Essentials 文档中的 api 身份验证。它指出,在社交身份验证之前,我必须进行 AddAuthentication。

services.AddAuthentication(o =>
{
    o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
}).AddCookie();

当我添加这些行时,工作登录根本不起作用。这些页面看起来可以正常工作,但用户从未处于登录状态。

当我添加身份验证时,AddDefaultIdentity 会发生什么?

【问题讨论】:

    标签: asp.net-core asp.net-identity


    【解决方案1】:

    您的应用程序中只能有一个默认身份验证方案。 AddDefaultIdentity 正在添加一个 cookie 身份验证作为默认身份验证方案,这就是 Identity 所使用的。

    当您为 API 添加新的身份验证时,您将在此处覆盖 DefaultScheme o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;,这是 Identity 所使用的。

    如果您想要一个新的 API 身份验证方案,您应该只添加身份验证而不设置默认身份验证并为其命名,

    services.AddAuthentication()
        .AddCookie("A_NEW_SCHEME_NAME", ... );
    

    并在您的控制器/操作中为此身份验证方案添加 AuthorzieAttribute

    [Authorize(AuthenticationSchemes = "A_NEW_SCHEME_NAME")]

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2012-12-29
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    相关资源
    最近更新 更多