2016-02-29 58 views
-1

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

//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, 
      ]); 

    } 

请我需要帮助

回答

0

activateuser()方法$newpassword为传入参数。无论如何,你在Admin::genPassword()中使用$this->resetpassword。看起来这是问题的原因,并且所有密码都是基于null值生成的。所以请尝试使用$user->password = Admin::genPassword($newpassword);

+0

谢谢。现在尝试它并恢复 – codeDev