命名为:'Admin'没有找到
本文关键字:命名为 Admin | 更新日期: 2023-09-27 18:17:31
我正在学习。net Core MVC中的身份验证/授权。
我正在尝试创建一个只能由'Admin'访问的控制器,但得到以下错误。
处理请求时发生未处理的异常。
InvalidOperationException: The AuthorizationPolicy named: 'Admin' was没有找到。
这是我的代码。我该怎么办?
[HttpGet("~/Test")]
[Authorize("Admin")]
public async Task<string> MyMethod()
{
return await Task<string>.Run(() => "Hello Admin");
}
根据这里的文档,您没有正确地添加Authorization属性。这是正确的做法。
[HttpGet("~/Test")]
[Authorize(Roles ="Admin")]
public async Task<string> MyMethod()
{
return await Task<string>.Run(() => "Hello Admin");
}
你可以在Startup.cs
中定义匹配策略services.AddAuthorization(options =>
{
options.AddPolicy("Admin",
authBuilder =>
{
authBuilder.RequireRole("Administrators");
});
});
authBuilder上有其他方法,你可以使用基于策略的授权要求声明或特定的用户名或自定义规则,并在启动时从中心位置控制规则https://docs.asp.net/en/latest/security/authorization/policies.html
如果您正在使用基于方案的身份验证,那么您可以通过带有授权过滤器的"AuthenticationSchemes "
例如[Authorize(AuthenticationSchemes = "UserBasicAuth")]
在这里,你的Startup.cs类应该看起来像:AddScheme<AuthenticationSchemeOptions,>("UserBasicAuth", null)
代替 [Authorize(Policy = "UserBasicAuth")]