首先,需要在 Startup.cs 文件的 ConfigureServices() 方法中添加自定义策略。
services.AddAuthorization(options => { options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin")); });
上面的例子中,添加了一个名为“AdminOnly”的策略,它要求用户具有“Admin”角色才能访问受保护的资源。
在自定义授权类中,需要实现 AuthorizationHandler
public class AdminRequirement : IAuthorizationRequirement {}
public class AdminHandler : AuthorizationHandler
return Task.CompletedTask;
}
}
在上面的例子中,定义了一个名为“AdminRequirement”的类,并在 AdminHandler 类中实现了 HandleRequirementAsync() 方法。该方法通过检查用户是否具有名为“IsAdmin”的声明,并且其值为“true”,来决定用户是否满足自定义要求。
可以通过调用 AuthorizeAttribute 的 Policy 属性,在控制器或操作方法上应用已定义的策略。
[Authorize(Policy = "AdminOnly")] public IActionResult AdminPanel() { return View(); }
上述示例中,AdminPanel 操作方法只允许具有“AdminOnly”策略的用户访问。
注意:还需要在 ConfigureServices() 方法中注册自定义要求。
services.AddTransient