Blazor 和 Microsoft.AspNetCore.Identity 需要电子邮件

Blazor and Microsoft.AspNetCore.Identity Requiring Email

我有一个使用 Microsoft.AspNetCore.Identity 的 Blazor 服务器应用程序。用户进行身份验证(使用 IdentityServer),然后可以查看页面,具体取决于他们的角色。我以两种方式之一检查角色。在页面的开头:

@attribute [Authorize(Roles = "some_user_role")]

或在代码块中:

<AuthorizeView Roles="some_user_role">
</AuthorizeView>

在我的 Startup.cs class 中,我有这个:

public void ConfigureServices(IServiceCollection services)
{
   //db connection stuff

   services.AddDefaultIdentity<CustomUserContext>(options =>
           options.SignIn.RequireConfirmedAccount = true)
        .AddRoles<IdentityRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddClaimsPrincipalFactory<UserClaimsPrincipalFactory<CustomUserContext>>();
    // do other stuff
}
        
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    //other stuff
     app.UseRouting();
     app.UseAuthentication();
     app.UseAuthorization();           

     app.UseEndpoints(endpoints =>
     {               
          endpoints.MapControllers();
          endpoints.MapBlazorHub();
          endpoints.MapFallbackToPage("/_Host");
                
     });
}

但是,当我使用我的凭据进行身份验证时,即使我帐户的 EmailConfirmed 为假,我仍然可以访问需要“some_user_role”角色的内容。我如何执行 EmailConfirmed?在他们确认之前,我是否必须删除用户角色?
谢谢

几乎是的。电子邮件确认与帐户工作无关 - 可以重置,即更改电子邮件。

按你的逻辑去做。