当用户可以在dotnet Core中拥有多个角色时(在没有Identity Server的情况下实现),处理授权的最佳方



我正在尝试创建一个身份验证/授权项目,要求用户在应用程序中具有多个角色,并根据角色对每个方法进行授权。一个用户可以有多个角色,我们不应该使用Identity Server,而应该使用Dotnet核心库。(将进行基于令牌的身份验证并使用JwtBearer库(

问题是创建一个具有多个角色的用户,然后根据该角色授权方法。通过Dotnet核心似乎不可能做到这一点,而我在过去的几天里一直在挣扎。微软的参考资料都没有解释这样做。

您可以创建一个管理用户的User表、一个管理角色的Role表和一个管理哪个用户拥有哪个角色的User Role表。

您可以通过定义策略来管理多个角色:

services.AddAuthorization(options =>
{
options.AddPolicy("AllowedAdminAndMod", policy =>
policy.RequireClaim(ClaimTypes.Role, "Admin", "Moderator")); 
});

用法:

[HttpGet]
[Authorize("AllowedAdminAndMod")]
public async Task<IActionResult> GetAll()
{
var data = await Mediator.Send(new GetAllCategoriesQuerie());
var result = new SuccessDataResult<List<CategoryDto>>(data);
return Ok(result);
}

如果你正在使用JWT,这种方法将适用于你。如果您想在Service而不是Controller中进行授权,可以使用面向方面编程(AOP(来实现。

相关内容

最新更新