В настоящее время я пытаюсь обновить имя пользователя/пользователя пользователя из мобильного приложения в проект веб-API. В настоящее время я использую аутентификацию oauth и токена. При обновлении пользователя идентификации пользователь становится неаутентифицированным, поскольку имя пользователя и токен доступа больше недействительны. Из того, что я прочитал, я должен обновить идентификационные утверждения. Это то, что я пробовал до сих пор:
var identity = new ClaimsIdentity(User.Identity);
if (result)
{
var identityUser = await UserManager.FindByNameAsync(User.Identity.Name);
identityUser.Email = AntiXssEncoder.HtmlEncode(value.Email, true);
identityUser.UserName = AntiXssEncoder.HtmlEncode(value.Email, true);
var identityResult = await UserManager.UpdateAsync(identityUser);
if(identityResult.Succeeded)
{
var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
await UserManager.RemoveClaimAsync(identityUser.Id, identity.FindFirst(ClaimTypes.Name));
await UserManager.AddClaimAsync(identityUser.Id, new Claim(ClaimTypes.Name, value.Email));
identity.RemoveClaim(identity.FindFirst(ClaimTypes.Name));
identity.AddClaim(new Claim(ClaimTypes.Name, value.Email));
authenticationManager.AuthenticationResponseGrant =
new AuthenticationResponseGrant(
new ClaimsPrincipal(identity),
new AuthenticationProperties { IsPersistent = false });
}
return Ok();
}
Тем не менее, он по-прежнему показывает предыдущее электронное письмо при использовании User.Identity.Name
и претензии для пользователя в authenticationManager
также не обновлены. Я не уверен, что еще делать, поскольку для Web API не так много документации. Любая помощь приветствуется.