如何在aspnet核心的代码中验证用户agains策略?

dok*_*ker 2 asp.net-core-mvc asp.net-core

我见过的所有教程都向您展示了如何通过添加来保护动作

[Authorize(Policy = "admin")]
Run Code Online (Sandbox Code Playgroud)

控制器或行动.

但是,我不需要抛出错误,而是需要返回浏览器(在json中)问题的答案,如果有人是"管理员",并且没有任何消息来源告诉如何做到这一点.是的,您可以查看声明(User.HasClaim),但政策由多个声明组成.

那我该怎么做?

Joe*_*tte 8

在控制器的构造函数中,您可以依赖IAuthorizationService authorizationService来注入它.然后,您可以使用它来检查用户是否符合以下策略:

var isAuthorized = await authorizationService.AuthorizeAsync(User, "admin");
Run Code Online (Sandbox Code Playgroud)

其中"admin"是策略的名称