我的 ASP.NET 项目使用开箱即用的默认身份验证方案。基本上我有一个像下面这样的控制器,它显示有关用户的敏感信息
[Authorize(Roles = "Administrator,Faculty")]
public async Task<IActionResult> LoadMemberTable(int max = 20)
{
var usersAdded = await _mongoDbContext.Members.Where(x => x.EncoderId == "0").ToListAsync();
return PartialView("Faculty/StudentTable", usersAdded);
}
因此,正如您所看到的,端点需要管理员或教员角色,不良行为者是否能够编辑自己的 cookie,并假设他的角色是管理员?即使他能够使用没有角色的普通用户帐户登录,他是否能够通过编辑他的 cookie 来访问此端点?或者 ASP.NET Core 在每次请求时都会检查此 cookie?最后,我是否必须在端点中实施自己的检查?比如检查用户是否真的具有管理员或教员的角色?
不,用户登录后,Asp.Net Core 将创建一个加密的 cookie 并将其添加到当前响应中,不良行为者很难编辑此 cookie。
ASP.NET Core 自动检查每个请求的身份验证 cookie,
因为您将
[Authorize(Roles = "xxx,xxx")]
添加到端点。认证中间件根据认证cookie中存储的信息自动验证用户的身份和角色,您不需要自己编写代码来验证这一点。