Aspnet Core 身份管理总是让我回到登录页面

Posted

技术标签:

【中文标题】Aspnet Core 身份管理总是让我回到登录页面【英文标题】:Aspnet Core Identity management always returning me to the login page 【发布时间】:2021-04-19 23:57:22 【问题描述】:

在我的应用程序中,我的帐户管理页面无法正常工作,我正在尝试转到以下内容。

https://localhost:5001/Identity/Account/Manage

根据我的脚手架,身份管理页面应该在哪里,我已经更改了代码以确保它指向我的 ApplicaitonUser 类,但由于某种原因,当我访问该页面时,即使我访问该页面,它也会让我回到登录状态已使用登录页面登录。

我已经这样配置了我的启动类

services.AddIdentity<ApplicationUser, IdentityRole>(config =>

    config.SignIn.RequireConfirmedEmail = true;
    config.Tokens.AuthenticatorTokenProvider = TokenOptions.DefaultAuthenticatorProvider;
    config.User.RequireUniqueEmail = true;

)
    .AddRoles<IdentityRole>()
    .AddEntityFrameworkStores<MSFSAddonDBContext>()
    .AddDefaultTokenProviders()
    .AddDefaultUI()
    .AddRoles<IdentityRole>();

services.AddScoped<IUserClaimsPrincipalFactory<ApplicationUser>,
AdditionalUserClaimsPrincipalFactory>();
services.AddSession(opts =>

    opts.Cookie.IsEssential = false; // make the session cookie Essential
);

确保禁用 cookie 警告,因为我相信如果尚未设置它可能会导致问题。我还使用以下代码启用了 MFA。

services.ConfigureApplicationCookie(config =>

    config.Cookie.Name = "Identity.Cookie";
    config.LoginPath = "/Identity/Account/Login";
);

services.AddAuthorization(options =>
options.AddPolicy("TwoFactorEnabled",
 x => x.RequireClaim("amr", "mfa")));
services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");

cookie 是在调试选项卡的边缘创建的,所以我不知道为什么我的代码拒绝进入管理页面,我正在尝试按照此处的指南进行操作。

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/mfa?view=aspnetcore-5.0

为了完成这里是我的配置设置

app.UseHttpsRedirection();
app.UseStaticFiles();
        
app.UseRouting();

app.UseAuthorization();
app.UseAuthentication();


app.UseEndpoints(endpoints =>

    endpoints.MapControllerRoute(
    name: "areas",
    pattern: "area:exists/controller=Home/action=Index/id?");


    endpoints.MapControllerRoute(
        name: "default",
        pattern: "controller=Home/action=Index/id?");
    endpoints.MapRazorPages();
);

【问题讨论】:

【参考方案1】:

我的问题是我的 AddDefaultUI 覆盖了路径,因此从未找到该页面。这是 asp.net core 5。

【讨论】:

以上是关于Aspnet Core 身份管理总是让我回到登录页面的主要内容,如果未能解决你的问题,请参考以下文章

AspNet Identity Core - 登录时的自定义声明

无法识别角色授权 - 带有 IdentityServer4 Cookie/Oidc 身份验证的 ASPNET CORE 5

AspNet Core 脚手架应用程序中的登录和注册页面在哪里?

如何在 aspnet 身份中进行会话管理?

使用 AspNet Core 2.0 进行 Google JWT 身份验证

用于 aspnet-core web api 的基于令牌的身份验证