Oauth 2.0 web API 2中的C#授权角色

Oauth 2.0 web API 2中的C#授权角色,oauth-2.0,asp.net-web-api2,Oauth 2.0,Asp.net Web Api2,我已经使用OWIN中间件实现了一个基于令牌的身份验证web Api 2应用程序,成功地进行了身份验证,在这里我可以检索令牌并使用它获得web Api的方法 但是,当我尝试添加角色授权时,它不起作用,我已彻底搜索并发现我必须在oAuthorization提供程序中的“GrantResourceOwnerCredentials”中添加以下内容: [Authorize(Roles = "Admin")] // GET api/Patient public IQueryable<

我已经使用OWIN中间件实现了一个基于令牌的身份验证web Api 2应用程序,成功地进行了身份验证,在这里我可以检索令牌并使用它获得web Api的方法

但是,当我尝试添加角色授权时,它不起作用,我已彻底搜索并发现我必须在oAuthorization提供程序中的“GrantResourceOwnerCredentials”中添加以下内容:

 [Authorize(Roles = "Admin")]
    // GET api/Patient
    public IQueryable<Patient> GetPatients()
identity.AddClaim(新声明(ClaimTypes.Role,“我需要添加的角色”)

上面这行是我能得到的全部,它也可以在

然而,每当我使用令牌访问任何方法(即使是具有不同角色的授权方法)时,它仍然会正常检索结果

我的意思是,例如,在API控制器中:如下所示:

 [Authorize(Roles = "Admin")]
    // GET api/Patient
    public IQueryable<Patient> GetPatients()
此外,服务器资源管理器中包含角色“AspNetUserRoles”的表也不会更新


我缺少什么?

您正在创建声明而不是角色,因此表不会更新。您是否尝试过在数据库中手动创建角色并添加对用户的引用?@GirmurD:我在数据库中手动添加了两个角色:在表“ASPNetRules”中,并使用“AspNetUserRoles”表将角色分配给用户,但仍然相同,任何令牌都可以访问上述授权方法。用户是否确实连接到该角色?应该有一个AspNetUser、AspNetRoles和AspNetUserRoles表。是吗?角色在AspNetRoles表中,您是否将用户放入AspNetUserRoles表中的角色?是你干的吗?有什么不同吗?是的。accountcontroller fill AspNetUser表中的register方法,然后我手动更新了AspNetRoles和AspNetUserRoles。据我所知,在使用令牌身份验证时,我必须以声明oAuthIdentity.AddClaim(新声明(ClaimTypes.role,“Employee”))的形式添加角色//在我在前面提到的表中定义了雇员角色之后。仍然可以使用任何令牌访问该方法!!!您是否尝试过以下答案: