我使用以下代码更新用户的角色:
string UserID = User.FindFirstValue(ClaimTypes.NameIdentifier);
var user = await _userManager.FindByIdAsync(UserID);
var roles = await _userManager.GetRolesAsync(user);
if (User.IsInRole(Roles.niveau1.ToString()))
{
List<string> lstRolesASupprimer = new() { Roles.niveau1.ToString() };
List<string> lstRolesAAjouter = new() { Roles.niveau2.ToString() };
var result = await _userManager.RemoveFromRolesAsync(user, lstRolesASupprimer);
result = await _userManager.AddToRolesAsync(user, lstRolesAAjouter);
}
问题是用户必须断开连接并重新连接才能激活新角色。是否可以立即更改用户角色?
谢谢
最佳答案
身份信息(roles,claims)在用户登录时放入cookie中。由于用户已经登录,因此这行代码_userManager.AddToRolesAsync(user, lstRolesAAjouter)
将更新 db ,但不更新 cookie。您必须重新发出 cookie。
尝试添加
SignInManager.SignIn(user, false, false);
之后
result = await _userManager.AddToRolesAsync(user, lstRolesAAjouter);
关于.net - 在.net core中更新具有身份的用户角色而无需重新登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72797432/