更新 Asp.Net 核心角色声明



如何更改角色声明并根据 Asp.Net Core中的一个请求应用它? 我尝试使用

_signInManager.RefreshSignInAsync(user);

但它仅在刷新页面后有效。有没有办法在一个请求中更新用户的角色并更改当前主体?

您无法直接更改Current ClaimsPrincipal

要反映新的声明,您可以尝试_signInManager.CreateUserPrincipalAsync

要检查同一请求中的新角色,您可以尝试User.AddIdentity显式将新角色声明添加到User

var roleName = Guid.NewGuid().ToString();                
var r1 = User.IsInRole(roleName);
var user = await _userManager.GetUserAsync(User);
var role = await _roleManager.CreateAsync(new IdentityRole { Name = roleName });
await _userManager.AddToRoleAsync(user, roleName);
var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(user);
var claims = claimsPrincipal.Claims.ToList();
User.AddIdentity(new ClaimsIdentity(new List<Claim>() { claims.FirstOrDefault(c => c.Value == roleName) }));
var r3 = User.IsInRole(roleName);

相关内容

  • 没有找到相关文章

最新更新