c# - ASP.NET CORE MVC 身份用户和角色不起作用
问题描述
我有一个启用了身份的 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]
.
细节:
推荐阅读
- php - chunk_split 与 substr 的好处?
- vba - 如果无法访问主服务器,则停止 SendChars
- node.js - 通过heroku上网站的路径打开本地文件
- javascript - 意外的`属性'forEach'在类型上不存在`错误
- html - Lighttpd 服务器无法在自定义错误中打开 jpg 图像
- android - 使用 audiorecord 录制后音轨会发出噪音
- python - 在基本脚本中使用 break 语句
- spacy - 为什么我的 SpaCy v3 记分器在精度、召回率和 f1 方面返回 0?
- javascript - JSON 匹配键/值并获取每个键的总值
- javascript - JavaScript - 延迟加载
- 元素