簡體   English   中英

Yii2 更新密碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM