ASP.NET CORE MVC 身份用户和角色不起作用
ASP.NET CORE MVC identity users and roles doesn't work
我有一个启用了身份的 ASP.NET CORE MVC 3.1 应用程序:
services.AddIdentity<IdentityUser,IdentityRole>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
数据库上下文继承自身份:
ApplicationDbContext : IdentityDbContext
启动配置:
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
但是,它不会在浏览应用程序时强制执行身份验证。但是,如果我使用 services.AddDefaultIdentity,它可以工作,但我失去了访问 RolManager 以获取经过身份验证的用户角色的功能。
你能告诉我我需要做什么来执行身份验证吗?
你有两种可能性:
- 用
[Authorize]
修饰你想要保护的每个端点。这在较大的代码库中会变得非常重复。
- 全球需要对您的端点进行授权:
app.UseEndpoints(endpoints =>
{
//or | and MapControllersWithViews()
endpoints.MapControllers().RequireAuthorization();
endpoints.MapRazorPages().RequireAuthorization();
});
请注意,这也会保护您的登录端点,因此您必须通过使用 [AllowAnonymous]
装饰它们来排除它们。
详情:
我有一个启用了身份的 ASP.NET CORE MVC 3.1 应用程序:
services.AddIdentity<IdentityUser,IdentityRole>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
数据库上下文继承自身份:
ApplicationDbContext : IdentityDbContext
启动配置:
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
但是,它不会在浏览应用程序时强制执行身份验证。但是,如果我使用 services.AddDefaultIdentity,它可以工作,但我失去了访问 RolManager 以获取经过身份验证的用户角色的功能。
你能告诉我我需要做什么来执行身份验证吗?
你有两种可能性:
- 用
[Authorize]
修饰你想要保护的每个端点。这在较大的代码库中会变得非常重复。 - 全球需要对您的端点进行授权:
app.UseEndpoints(endpoints =>
{
//or | and MapControllersWithViews()
endpoints.MapControllers().RequireAuthorization();
endpoints.MapRazorPages().RequireAuthorization();
});
请注意,这也会保护您的登录端点,因此您必须通过使用 [AllowAnonymous]
装饰它们来排除它们。
详情: