_userManager.IsInRoleAsync(user, RoleName) просто возвращает false

#c# #asp.net-core #asp.net-core-webapi

#c# #asp.net-core #asp.net-core-webapi

Вопрос:

Я назначаю роль для пользователя, но когда я проверяю

 _userManager.IsInRoleAsync(user, roleName)
 

Он просто возвращает false, и я не могу удалить эту роль

Вот код в UserService

 public async Task<ApiResult<bool>> RoleAssign(Guid id, RoleAssignRequest request)
{
    var user = await _userManager.FindByIdAsync(id.ToString());
    if (user == null)
    {
        return new ApiErrorResult<bool>("Tài khoản không tồn tại");
    }
    var removedRoles = request.Roles.Where(x => x.Selected == false).Select(x => x.Name).ToList();
    foreach (var roleName in removedRoles)
    {
        if (await _userManager.IsInRoleAsync(user, roleName) == true)
        {
            await _userManager.RemoveFromRoleAsync(user, roleName);
        }
    }
    await _userManager.RemoveFromRolesAsync(user, removedRoles);

    var addedRoles = request.Roles.Where(x => x.Selected).Select(x => x.Name).ToList();
    foreach (var roleName in addedRoles)
    {
        if (await _userManager.IsInRoleAsync(user, roleName) == false)
        {
            await _userManager.AddToRoleAsync(user, roleName);
        }
    }

    return new ApiSuccessResult<bool>();
}
 

Ответ №1:

Я решил проблему, я понизил рейтинг с Dotnet core 5.0 до Dotnet core 3.1 и изменил всю структуру идентификации на 3.1.1. Я думаю, это ошибка.

Ответ №2:

RemoveFromRoleAsync возвращает IdentityResult , скорее всего, там указан ваш сбой

 IdentityResult result = await _userManager.RemoveFromRoleAsync(user, roleName);
if (!result.Succeeded)
{
    // check what's in errors
    var errors = result.Errors;
}
 

Комментарии:

1. при проверке я получаю сообщение об ошибке «UserNotInRole», конкретное описание: «Пользователь не находится в роли «учитель»».

2. переменные роли = ожидают _userManager. GetRolesAsync(user); когда я проверяю, как эта переменная, роли по-прежнему получают список ролей пользователя, что произошло? @Eric