如果我有两个.net核心WebApi控制器,AdminController和UserController(在一个项目中)。并且两者都需要授权,那么如何在IdentityServer4中将它们设置为2个范围,以便Admin用户可以访问两个控制器,但简单的用户无法访问Admin控制器而只能访问简单的用户控制器?我的客户是Angular 2类型。是否还有显示基于角色的授权的示例? 谢谢,小牛
答案 0 :(得分:1)
可能不是你问题的明确答案(因为它不涉及2个范围) - 但它可能会引导你到某个地方。
我假设您使用TokenValidation middleware,并且您的api是使用IdentityServerAuthentication设置的
您可以拥有角色声明,指示用户具有的角色(即用户,管理员)。
然后,您可以使用[Authorize(Roles="admin")]
属性检查admin api的角色,对于用户api,只需使用[Authorize]
确保用户已登录,或将两个角色都指定为如果需要,以逗号分隔的列表([Authorize(Roles="admin,user")]
)。
即:
[Authorize(Roles="Admin")]
public class AdminController : ApiController
{
以下是.net Core的Authorize属性上的文档链接:
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles