[英]_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.