我正在学习.NET Core MVC中的身份验证/授权。
我正在尝试创建一个只能由' Admin'访问的控制器,但会收到以下错误。
处理请求时发生未处理的异常。
InvalidOperationException:AuthorizationPolicy命名为:' Admin'是 没找到。
这是我的代码。我该怎么办?
[HttpGet("~/Test")]
[Authorize("Admin")]
public async Task<string> MyMethod()
{
return await Task<string>.Run(() => "Hello Admin");
}
答案 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");
}