在Startup.cs文件ConfigureServices方法中,确保已添加了策略,如下所示:
services.AddAuthorization(options =>
{
options.AddPolicy("AdminPolicy", policy =>
policy.RequireRole("Admin"));
});
在需要进行策略认证的控制器/方法中,确保已添加了AuthorizeAttribute,如下所示:
[Authorize(Policy = "AdminPolicy")]
public IActionResult AdminPage()
{
return View();
}
在使用策略进行认证之前,确保用户已登录并具有正确的角色。你可以在控制器/方法中使用UserManager或RoleManager来验证用户角色,如下所示:
public async Task AdminPage()
{
if (User.Identity.IsAuthenticated)
{
var user = await _userManager.GetUserAsync(User);
if (await _userManager.IsInRoleAsync(user, "Admin"))
{
return View();
}
}
return RedirectToAction("AccessDenied");
}
如果以上方法不存在错误且仍无法进行策略认证,则可能是在于注册策略处理程序的顺序不正确。可以尝试移动注册策略处理程序的代码至Configure方法的更早位置并重新启动应用程序以解决此问题。