C# _IsInRoleAsync(user,roleName)只返回false
我正在为用户分配角色,但当我检查C# _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.ToStr
_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>();
}
公共异步任务角色签名(Guid id,角色签名请求)
{
var user=await_userManager.FindByIdAsync(id.ToString());
if(user==null)
{
返回新的ApiErrorResult(“Tái khoản khôtồn tạ(i);;
}
var removedRoles=request.Roles.Where(x=>x.Selected==false);
foreach(移除角色中的变量roleName)
{
if(wait_userManager.IsInRoleAsync(user,roleName)==true)
{
wait_userManager.RemoveFromRoleAsync(用户,roleName);
}
}
wait_userManager.RemoveFromRolesAsync(用户,removedRoles);
var addedRoles=request.Roles.Where(x=>x.Selected).Select(x=>x.Name.ToList();
foreach(addedRoles中的var roleName)
{
if(wait_userManager.IsInRoleAsync(user,roleName)==false)
{
wait_userManager.AddToRoleAsync(用户,roleName);
}
}
返回新的APIssuccessResult();
}
RemoveFromRoleAsync
返回一个IdentityResult
,其中最有可能列出您的失败
IdentityResult result = await _userManager.RemoveFromRoleAsync(user, roleName);
if (!result.Succeeded)
{
// check what's in errors
var errors = result.Errors;
}
我解决了这个问题,我从Dotnet core 5.0降级到Dotnet core 3.1,并将所有identity framework更改为3.1.1。我认为这是一个bug。当我检查它时,我得到错误“UserNotInRole”,具体描述是“用户不在‘教师’角色中”。var roles=wait\u userManager.GetRolesAsync(用户);当我像这样检查变量角色仍然获取用户的列表角色时,发生了什么@埃里克