【发布时间】:2015-07-03 15:42:13
【问题描述】:
我正在尝试验证旧用户密码,以便他能够更改密码,但目前我收到 Hash is invalid 错误。
这是验证规则:
['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->salt?你是故意加盐吗?哈希密码已经加盐。而且我不是 100% 确定,但看起来你比较 $this->salt 。 $password 和 $this->password 和 $this->password 是来自表单输入的原始新密码,但您应该将其与旧密码哈希进行比较。
-
我在用户的更改通行证中有此错误。如何解决这个问题。 stackoverflow.com/questions/44218661/…