【问题标题】:Authorize Claim in every Web Api Request using ASP.NET Identity Token Based Authenticaton使用基于 ASP.NET 身份令牌的身份验证在每个 Web Api 请求中授权声明
【发布时间】:2015-01-27 10:56:45
【问题描述】:
如何使用基于令牌的身份验证为每个 Web api 请求授权声明。我有一个控制器,我在其上应用了Authorize 属性,该属性将在每个请求上查找令牌,如果它是有效令牌则返回响应。但是我有一个名为AdminController 的控制器,我希望拥有admin 声明的用户可以访问它。我该如何实施?请问有什么建议吗?
【问题讨论】:
标签:
asp.net-web-api2
access-token
asp.net-identity-2
【解决方案1】:
快速的方法是添加“角色”类型的声明并为其分配“管理员”的值,这应该在方法GrantResourceOwnerCredentials为该用户生成令牌之前完成,它将如下面的代码所示:
identity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));
现在在您的AdminController 中,您将其归因于
[Authorize(Roles="Admin")]
这称为基于角色的身份验证,但最终角色被视为声明。
你可以查看这个complete code sample too
【讨论】:
-
我想知道 web.config 中的位置标签是否也可以识别角色。我使用 Elmah 来记录错误并确保我设置了位置标签并仅限于那些具有管理员角色的用户。我发现当我进行 API 调用时,它成功传递了控制器级别的授权属性,但我在位置标签 下设置的规则似乎不起作用。我仍然收到“拒绝访问”错误。对此的任何建议都会有所帮助。