【发布时间】:2022-03-28 18:11:41
【问题描述】:
我想添加一个策略,以便每个用户都希望具有“管理员”角色的用户可以使用控制器。下面是我的代码。当我在我的控制器类上键入 [Authorize(Policy="NotAdmin")] 时,实际上每个人(无论是否是管理员)都有权拒绝来自控制器的操作。我使用 Visual Studio 2022 和 .NET 6.0。在我的项目中,我使用 Identity,我有扩展 IdentityUser 类的 ApplicationUser 类。
public class NotAdminRequirement : IAuthorizationRequirement
{
}
public class NotAdminHandler : AuthorizationHandler<NotAdminRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, NotAdminRequirement requirement)
{
var user = context.User;
if (!user.IsInRole("Admin"))
{
context.Succeed(requirement);
}
return Task.CompletedTask;
}
}
在 Program.cs 中:
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("NotAdmin", policy => policy.Requirements.Add(new NotAdminRequirement()));
});
【问题讨论】:
-
您目前是否被拒绝以具有任何权限的用户身份访问 API?
标签: c# asp.net-core asp.net-identity asp.net-core-identity asp.net-authorization