名称为"Admin"的AuthorizationPolicy未找到

Hoc*_*eyJ 14 c# authorization asp.net-core-mvc asp.net-core

我正在学习.NET Core MVC中的身份验证/授权.

我正在尝试创建一个只能由'Admin'访问的控制器,但会收到以下错误.

处理请求时发生未处理的异常.

InvalidOperationException:找不到名为:'Admin'的AuthorizationPolicy.

这是我的代码.我该怎么办?

[HttpGet("~/Test")]
[Authorize("Admin")]
public async Task<string> MyMethod()
{
    return await Task<string>.Run(() => "Hello Admin");
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*tte 18

您可以在Startup.cs中定义匹配策略

services.AddAuthorization(options =>
  {

        options.AddPolicy("Admin",
            authBuilder =>
            {
                authBuilder.RequireRole("Administrators");
            });

 });
Run Code Online (Sandbox Code Playgroud)

authBuilder上有其他方法,您可以使用基于策略的授权来声明声明或特定用户名或自定义规则,并从Startup中的中心位置控制规则 https://docs.asp.net/en/latest/security/authorization /policies.html


Hoc*_*eyJ 14

此处的文档一致,您尚未正确添加Authorization属性.这是正确的方法.

[HttpGet("~/Test")]
[Authorize(Roles ="Admin")]
public async Task<string> MyMethod()
{
    return await Task<string>.Run(() => "Hello Admin");
}
Run Code Online (Sandbox Code Playgroud)