Yii2更新密码

时间:2015-11-13 02:23:16

标签: php yii2

我正在构建我的密码更新功能。但得到错误“哈希无效”。不是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);

1 个答案:

答案 0 :(得分:1)

您选择了用户$model = User::findOne(['id' => Yii::$app->user->identity->id]);,但在此之后您执行了$model->load(Yii::$app->request->post())。 所以现在你的模型类$this->password不是来自数据库而是来自post。我错了吗?请在调用$password, $this->password方法时调试validatePassword变量中的内容。