AuthorizationPolicy命名为:' Admin'没找到

时间:2016-11-10 16:08:35

标签: c# asp.net-core asp.net-core-mvc authorization

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

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

  

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

     

InvalidOperationException:AuthorizationPolicy命名为:' Admin'是   没找到。

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:12)

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

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