由于一些奇怪的原因,我发现很难用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);
。