Обновление заявок. Принцип после смены ролей.
У меня есть некоторые проблемы с изменением роли в личности dotnetcore.
У меня есть следующий код.
private async Task SetRoleToX(ClaimsPrincipal claimsPrincipal, string X)
{
var currentUser = await UserManager.GetUserAsync(claimsPrincipal);
var roles = await UserManager.GetRolesAsync(currentUser);
await UserManager.RemoveFromRolesAsync(currentUser, roles);
await UserManager.AddToRoleAsync(currentUser, X);
await SignInManager.RefreshSignInAsync(currentUser);
}
Я не могу получить ClaimsPrincipal для обновления.
Я пытался использовать вход и выход.
Переключатель ролей работает нормально, если я выполняю вход и выход вручную.
Я искал в Интернете, и многие люди говорят, что это должно работать:(
1 ответ
Решение
Скорее досадно, все, что мне нужно было сделать, это отправить токен обратно с запросом.
Я не могу поверить, что я не думал об этом, надеюсь, это кому-то поможет.
Обновите с некоторым кодом в соответствии с просьбой
// In controller
public async Task SwapRole([FromBody]RoleSwapRequestDto dto)
{
await _service.SwapRole(
User,
dto.RoleName
);
return await AddCookieToResponse();
}
private async Task AddCookieToResponse()
{
// Make your token however your app does this (generic dotnet core stuff.)
var response = await _tokenService.RegenToken(User);
if (response.Data != null && response.Data.Authenticated && response.Data.TokenExpires.HasValue)
{
Response.Cookies.Append(AuthToken, response.Data.Token, new CookieOptions
{
HttpOnly = false,
Expires = response.Data.TokenExpires.Value
});
}
return response;
}
/// inside _service
public async Task SwapRole(ClaimsPrincipal claimsPrincipal, string X)
{
var currentUser = await UserManager.GetUserAsync(claimsPrincipal);
var roles = await UserManager.GetRolesAsync(currentUser);
await UserManager.RemoveFromRolesAsync(currentUser, roles);
await UserManager.AddToRoleAsync(currentUser, X);
await SignInManager.RefreshSignInAsync(currentUser);
}