名称为“Admin”的AuthorizationPolicy未找到

问题描述 投票:11回答:2

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

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

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

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

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

[HttpGet("~/Test")]
[Authorize("Admin")]
public async Task<string> MyMethod()
{
    return await Task<string>.Run(() => "Hello Admin");
}
c# asp.net-core asp.net-core-mvc authorization
2个回答
16
投票

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

services.AddAuthorization(options =>
  {

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

 });

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


12
投票

与文档here一致,您尚未正确添加Authorization属性。这是正确的方法。

[HttpGet("~/Test")]
[Authorize(Roles ="Admin")]
public async Task<string> MyMethod()
{
    return await Task<string>.Run(() => "Hello Admin");
}
© www.soinside.com 2019 - 2024. All rights reserved.