我见过的所有教程都向您展示了如何通过添加
来保护动作[Authorize(Policy = "admin")]
到控制器或行动。
但是,如果有人是“管理员”,我需要返回浏览器(在json中)问题的答案,而不是抛出错误。 并没有消息来源告诉你如何做到这一点。 是的,您可以查看声明(User.HasClaim),但政策由多个声明组成。
那我该怎么做?
答案 0 :(得分:6)
在控制器的构造函数中,您可以依赖IAuthorizationService authorizationService来注入它。然后,您可以使用它来检查用户是否符合以下策略:
var isAuthorized = await authorizationService.AuthorizeAsync(User, "admin");
其中“admin”是政策的名称