【发布时间】:2021-03-28 08:01:16
【问题描述】:
我尝试通过 UI 上的复选框为用户删除或添加角色,但出现了一些错误
await _userManager.IsInRoleAsync(user, roleName)
此代码总是返回 false,我无法检查。
var user = await _userManager.FindByIdAsync(id.ToString());
var roles = await _userManager.GetRolesAsync(user);
我仍然可以得到roles 的user。
谁能解释我收到此错误的原因?
private readonly UserManager<User> _userManager;
private readonly SignInManager<User> _signInManager;
private readonly RoleManager<Role> _roleManager;
private readonly IConfiguration _config;
private readonly IMapper _mapper;
public UserService(UserManager<User> userManager,
SignInManager<User> signInManager, RoleManager<Role> roleManager,
IConfiguration config,
IMapper mapper)
{
_signInManager = signInManager;
_userManager = userManager;
_roleManager = roleManager;
_config = config;
_mapper = mapper;
}
public async Task<ApiResult<bool>> RoleAssign(int id, RoleAssignRequest request)
{
var user = await _userManager.FindByIdAsync(id.ToString());
var roles = await _userManager.GetRolesAsync(user);
var listRole = await _roleManager.RoleExistsAsync("admin");
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, roles);
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>();
}
【问题讨论】:
-
你检查了吗 await _userManager.RemoveFromRoleAsync(user, roleName);结果?
-
是的,我已经检查过了,它返回了一个 IdentityResult :“UserNotInRole”
标签: c# asp.net asp.net-mvc asp.net-core asp.net-core-5.0