Я искал в нескольких местах, как элегантно изменить пароль пользователя.

Ближе всего к использованию я подошел к этому посту: Пароль сброса идентификатора ASP.NET

Мой алгоритм:

ApplicationUser user = await _userManager.FindByIdAsync(model.Id);  

user.UserName = model.Name;
user.Email = model.Email; 
 
if(model.ChangePassword != null)
{
    var newPasswordHash = _userManager.PasswordHasher.HashPassword(user, model.ChangePassword);
    user.PasswordHash = newPasswordHash;
}

identityResult = await _userManager.UpdateAsync(user);

Но таким образом администратор при заполнении этого поля не будет иметь срока действия IdentityOptions.

0
Gabriel Lemos 16 Фев 2021 в 22:03

1 ответ

Лучший ответ

Следующим должен быть комментарий, но я не могу комментировать, попробуйте использовать UserManager.GeneratePasswordResetTokenAsync и UserManager.ResetPasswordAsync или наследовать от UserManager, и у вас будет доступ к защищенному методу UpdatePasswordHash(TUser user, string newPassword, bool validatePassword) (исходный код которого вы можете предоставить) .

0
41D0 16 Фев 2021 в 21:01