Много было задано вокруг User.IsInRole, но я не могу найти правильный ответ.
Мне нужно подтвердить определенную роль, используя AuthorizationHandler (через требование авторизации)
У меня есть проект ASP.NET Core 2.1 с индивидуальными учетными записями пользователей. Я заполнил базу данных и добавил пользователя к роли (одна роль), используя userManager.AddToRoleAsync
, и да, база данных показывает пользователей, роли и связь между ними.
Я создал CandidateViewHandler, который управляет авторизацией для View-Contorller. ЭТО выглядит следующим образом
public class CandidateViewHandler : AuthorizationHandler<ViewCandidateRequirement, Candidate>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ViewCandidateRequirement requirement, Candidate resource)
{
if (context.User.Identity.IsAuthenticated)
{
if (resource.Email == context.User.FindFirst(ClaimTypes.Name).Value)
{
context.Succeed(requirement);
}
else
{
bool IsAdmin = context.User.IsInRole("Administrator");
bool IsSearch = context.User.IsInRole("Searcher");
if (IsAdmin == true || IsSearch == true)
{
context.Succeed(requirement);
}
}
}
return Task.CompletedTask;
}
}
Однако IsAdmin
и IsSearch
всегда возвращают false
. Даже при тестировании в контроллере результаты остаются прежними. Должен ли я использовать Claims
в 2.1? И если да, то как?