我正在尝试创建一个身份验证/授权项目,要求用户在应用程序中具有多个角色,并根据角色对每个方法进行授权。一个用户可以具有多个角色,我们不应该使用Identity Server,而应该从Dotnet核心库中进行。(将进行基于令牌的身份验证并使用JwtBearer库)问题是创建一个具有多个角色的用户,然后根据角色授权方法。这似乎不可能通过Dotnet核心来完成,我在过去几天里一直在挣扎。没有一个微软的参考资料解释这样做。
vlf7wbxs1#
您可以创建管理用户的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)来完成此操作。
1条答案
按热度按时间vlf7wbxs1#
您可以创建管理用户的User表、管理角色的Role表以及管理哪个用户具有哪个角色的USER ROLE表。
您可以通过定义策略来管理多个角色:
用法:
如果您使用的是JWT,则此方法适用。如果您希望在Service而不是Controller中进行授权,则可以使用面向方面的编程(AOP)来完成此操作。