我已经使用OWIN中间件实现了基于令牌的身份验证Web Api 2应用程序,成功进行了身份验证,我可以检索令牌并使用它来访问Web Api的方法。
然而,当我尝试添加角色授权时,它不起作用,我已经彻底搜索并发现我必须在oAuthorization提供程序中添加“GrantResourceOwnerCredentials”:
identity.AddClaim(new Claim(ClaimTypes.Role, "the role that i need to add"));
以上这一行是我能得到的,也可以在Authorization roles WebAPI oauth owin
中找到然而,每当我使用令牌获取任何方法(即使是具有不同角色的授权方法)时,它仍然会正常检索结果。
我的意思是例如在API控制器中:它类似于以下内容:
[Authorize(Roles = "Admin")]
// GET api/Patient
public IQueryable<Patient> GetPatients()
在“GrantResourceOwnerCredentials”方法中,我只添加了一个员工角色:
var oAuthIdentity = new ClaimsIdentity(context.Options.AuthenticationType);
oAuthIdentity.AddClaim(new Claim(ClaimTypes.Role, "Employee"));
此外,服务器资源管理器中包含角色“AspNetUserRoles”的表未更新。
我缺少什么?