简体   繁体   English

_userManager.IsInRoleAsync(user, roleName) 只返回 false

[英]_userManager.IsInRoleAsync(user, roleName) just return false

I am assign a role for the user, but when I check我为用户分配了一个角色,但是当我检查

_userManager.IsInRoleAsync(user, roleName)

It just return false and I cannot remove that role它只是返回 false,我无法删除该角色

Here is the code at userService这是 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>();
}

RemoveFromRoleAsync returns an IdentityResult , your failure is most likely listed in there RemoveFromRoleAsync返回一个IdentityResult ,您的失败很可能在其中列出

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

I solved the problem, I downgraded from Dotnet core 5.0 to Dotnet core 3.1 and changed all identity framework to 3.1.1.我解决了这个问题,我从 Dotnet core 5.0 降级到 Dotnet core 3.1 并将所有身份框架更改为 3.1.1。 I think it a bug.我认为这是一个错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我在使用 UserManager.IsInRoleAsync() 时收到 InvalidOperationException - Im getting InvalidOperationException when using UserManager.IsInRoleAsync() 管理员声明已添加到IdentityUser中,但usermanager不能通过IsInRoleAsync找到它 - Admin claim added to IdentityUser, but the usermanager does not find it with IsInRoleAsync UserManager.GetUserAsync(User)是否可以在具有Authorize属性的类中返回null? - Can UserManager.GetUserAsync(User) return null in a class with Authorize attribute? user.isinrole 和 IsInRoleAsync(TUser user, string role) 的区别 - Difference between user.isinrole and IsInRoleAsync(TUser user, string role) 在 Y 次无效尝试和 userManager.IsLockedOutAsync 为 false 后锁定 ASP.NET 登录用户 X 分钟 - Lock ASP.NET login user for X minutes after Y invalid attempts and userManager.IsLockedOutAsync is false User.Identity.GetUserId()&amp;&amp; User.IsInRole(“角色名称”)不起作用 - User.Identity.GetUserId() && User.IsInRole(“rolename”) Not Working 自定义UserManager始终返回null - Custom UserManager always return null UserManager.CreateAsync。成功总是返回false - UserManager.CreateAsync .Success always returns false 使用usermanager编辑用户个人资料图像 - edit user profile image with usermanager 使用 UserManager 更改用户的 email - Using UserManager to change the email of a user
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM