Yii 生成密码哈希不起作用



由于一些奇怪的原因,我发现很难用yii->$app->generatePasswordhash($password)登录。我有一个支持,我可以在其中注册用户并更改密码。当我创建用户密码时,用户可以成功登录,但是当我编辑用户密码时,系统会一直告诉我无效的用户名或密码。下面是我的代码。

//Model
Class Adminuser  extends ActiveRecord
{
 public $resetpassword
 public function activateuser($id,$newpassword)
    {
        //echo Yii::$app->security->generatePasswordHash($newpassword); exit;
       $user = Adminuser::find()->where(['id' =>$id])->one();
       $user->status = self::SET_STATUS; 
       $user->password_reset_token = null;
       $user->password = Admin::genPassword($this->resetpassword); // this returns yii::$app->security->generatePasswordHash($password)
        return $user->save();
    }
}

控制器操作

 public function actionActivate($id)
    {
                $model = new Adminuser();
                $model->scenario = 'adminactivate';
            if ($model->load(Yii::$app->request->post()) && $model->validate())           {
            if($model->activateuser($id,$model->password))
            {
                //send a mail
                Yii::$app->session->setFlash('success', 'New user has been activated.');
                return $this->redirect(['index']);
            }
            else
                $errors = $model->errors;
            }
            return $this->render('activate', [
                'model' => $model,
            ]);
    }

请我需要帮助

您的activateuser()方法具有$newpassword作为传入参数。无论如何,您正在Admin::genPassword()中使用$this->resetpassword.看起来这就是问题的原因,您的所有密码都是根据null值生成的。因此,请尝试改用$user->password = Admin::genPassword($newpassword);

最新更新