Я пытаюсь проверить старый пароль пользователя, чтобы он мог изменить пароль, но на данный момент я получаю Ошибка Hash Ошибка.Yii2 - подтвердите пароль (Hash is invalid error)
Это правило проверки:
['password_old', function($attribute){
if(!$this->validatePassword($this->{$attribute}))
$this->addError($attribute, 'Please Enter Your Old Password');
}],
validatePassword метод:
public function validatePassword($password){
return Yii::$app->getSecurity()->validatePassword($this->salt . $password, $this->password);
}
форма используется для изменения пароля:
$form = ActiveForm::begin(
[
'enableAjaxValidation' => true,
'action' => 'user/changepassword',
'id' => 'changePassword'
]
);
echo $form->field($model, 'password_old')->passwordInput(['autocomplete' => 'off']);
echo $form->field($model, 'password')->passwordInput(['autocomplete' => 'off'])->label('New Password');
echo $form->field($model, 'password_confirm')->passwordInput(['autocomplete' => 'off']);
Почему $ this-> соль? Вы добавляете еще одну соль? Хэш-пароль уже солен. И я не уверен на 100%, но похоже, что вы сравниваете $ this-> salt. $ password с $ this-> password и $ this-> password - это новый пароль из ввода формы, но вы должны сравнить его со старым хэшем пароля. – Bizley
У меня есть эта ошибка в переходе изменения для пользователя. как это исправить. https://stackoverflow.com/questions/44218661/after-make-or-change-password-user-dont-login-in-yii2 – user3770797