[英]Yii2 Update Password
我正在構建我的密碼更新功能。 但是收到錯誤“哈希無效”。 不是 100% 確定。
用戶控制器
$model = User::findOne(['id' => Yii::$app->user->identity->id]);
$model->scenario = User::SCENARIO_PASSWORD;
if ($model->load(Yii::$app->request->post())) {
// get values
$post = Yii::$app->request->post('User');
// validate old password
if($model->validatePassword($post['password'])){
$model->password = Yii::$app->getSecurity()->generatePasswordHash($post['newPassword']);
// use new password
if($model->save()){
Yii::$app->session->setFlash('success', 'Password Updated');
return $this->redirect(['user/profile']);
} else {
echo 'Couldn\'t save';
}
} else{
// incorrect password
$model->addError('newPassword', 'Incorrect Password');
return $this->render('jsUpdatePassword',[
'model' => $model,
]);
}
}
我的 $post['password'] 我希望是我輸入的字符串。 我不確定為什么我的哈希會無效,因為它調用return Yii::$app->security->validatePassword($password, $this->password);
在模型中?
您正在選擇用戶$model = User::findOne(['id' => Yii::$app->user->identity->id]);
這很好,但之后你做$model->load(Yii::$app->request->post())
。 所以現在在你的模型類中$this->password
不是來自數據庫而是來自 post。 我錯了嗎? 請調試您在調用validatePassword
方法時在$password, $this->password
變量中validatePassword
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.