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?在他们确认之前,我是否必须删除用户角色?
谢谢
几乎是的。电子邮件确认与帐户工作无关 - 可以重置,即更改电子邮件。
按你的逻辑去做。
我有一个使用 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?在他们确认之前,我是否必须删除用户角色?
谢谢
几乎是的。电子邮件确认与帐户工作无关 - 可以重置,即更改电子邮件。
按你的逻辑去做。