1

我正在开发具有Identity 2.0承载认证的ASP.NET Web API应用程序。我配置了承载认证并实现了SignIn方法,这样当我传递头时:Web API承载令牌认证授权不起作用

Authorization: Bearer uGjAWZA1nPc1AqPuKpAzPhb989SYbtGd... 

工作正常。我可以拨打User.Identity.GetUserId()User.Identity.GetUserName()。我甚至可以检查用户是否在某个角色中,并且它也很好。

什么是不工作,是[Authorize]属性。当我指定角色,如[Authorize(Roles = "Admin")]它返回:

{ 
    Message: "Authorization has been denied for this request." 
} 

任何想法?

回答

2

您是否在创建身份时添加了角色声明?

userIdentity.AddClaim(new Claim(ClaimTypes.Role, "Admin")); 
+0

非常好!如果有一天管理员会改变用户的角色呢?在这种情况下,用户将不再是管理员,但他可以使用管理资源。如何处理这个? – Andrei 2014-09-24 12:16:05