Предположим, я реализовал способ изменения пароля в панели пользователя.Прежде чем вносить изменения, я прошу пользователя ввести текущий пароль, я фактически создал этот метод:
[HttpPost]
[ValidateAntiForgeryToken]
public bool CheckCurrentPassword(string username, string password)
{
var originalUser = _userManager.Users.FirstOrDefault(c => c.UserName == username);
var hash = _userManager.PasswordHasher.HashPassword(originalUser, password);
if (hash == originalUser.PasswordHash)
return true;
return false;
}
по сути, я отправляю этому методу username
, который является уникальным полем, и я могу получитьпользователь, который попросил сменить пароль.Я также получаю хэш нового пароля, а затем сравниваю его с сохраненным в базе данных хешем.
Проблема в том, что хеш отличается.Я не знаю почему, но с одним и тем же паролем у меня есть два разных хэша (один хранится в БД), а другой сгенерирован на лету методом.
Возможно, есть другой способ проверить, является ли текущий парольравен введенному паролю?