Обновить Asp.Net Core Role Claim - PullRequest
       25

Обновить Asp.Net Core Role Claim

0 голосов
/ 19 сентября 2018

Как я могу изменить заявку на роль и применить ее в рамках одного запроса в Asp.Net Core?Я пытался использовать

_signInManager.RefreshSignInAsync(user);

Но это работает только после обновления страницы.Есть ли способ обновить роли для пользователя и изменить текущего участника в одном запросе?

1 Ответ

0 голосов
/ 20 сентября 2018

Вы не можете изменить 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);
...