app error login.php,Yii2 basic版登录使用Yii::$app->user->login($user);出现错误

Yii2 basic版登录使用Yii::$app->user->login($user);出现错误Array to string conversion

MyAuthenticationController.php

request->post('username',null);

$password = Yii::$app->request->post('password',null);

$user = User::findOne(['username'=>$username]);

if(($username!=null)&&($password!=null))

{

if($user!=null){

if($user->validatePassword($password)){

$this->redirect(['index']);//这里可以实现重定向

// Yii::$app->user->login($user);这是源代码,但是会出现“Array to string conversion”的错误,暂时还没有解决,所以使用上面的重定向代码来转向指定登录成功的页面

}else{

$error = 'Password validation failed';

}

}else{

$error = 'User not found';

}

}

return $this->render('login',['error'=>$error]);

}

public function actionLogout()

{

Yii::$app->user->logout();

return $this->redirect(['login']);

}

}

app\models\User.php

$id]);

}

/**

* @inheritdoc

*/

public static function findIdentityByAccessToken($token, $type = null)

{

return static::findOne(['access_token'=>$token]);

}

/**

* Finds user by username

*

* @param string $username

* @return static|null

*/

public static function findByUsername($username)

{

return static::findOne(['username'=>$username]);

}

/**

* @inheritdoc

*/

public function getId()

{

return $this->PrimaryKey();

}

/**

* @inheritdoc

*/

public function getAuthKey()

{

return $this->auth_Key;

}

/**

* @inheritdoc

*/

public function validateAuthKey($authKey)

{

return $this->getAuthKey() === $authKey;

}

/**

* Validates password

*

* @param string $password password to validate

* @return boolean if password provided is valid for current user

*/

public function validatePassword($password)

{

return Yii::$app->security->validatePassword($password,$this->password_hash);

}

public function generateAuthKey()

{

$this->auth_key = Yii::$app->security->generateRandomKey();

}

public function beforeSave($insert)

{

if(parent::beforeSave($insert)){

if($this->isNewRecord){

$this->auth_key = \Yii::$app->security->generateRandomString();

}

return true;

}

return false;

}

}

views\my-authentication\login.php

['class'=>'alert-danger'],'body'=>$error]);

};

?>

user->isGuest) { ?>

'form-control']);?>

'form-control']); ?>

'btn btn-primary']); ?>

You are authentication!

'btn btn-warning']); ?>

SQL

--

-- 表的结构 `user`

--

CREATE TABLE IF NOT EXISTS `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`username` varchar(255) NOT NULL,

`auth_key` varchar(32) NOT NULL,

`password_hash` varchar(255) NOT NULL,

`access_token` varchar(100) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--

-- 转存表中的数据 `user`

--

INSERT INTO `user` (`id`, `username`, `auth_key`, `password_hash`, `access_token`) VALUES

(1, 'foo', '', '$2a$12$hL0rmIMjxhLqI.xr7jD1FugNWEgZNh62HuJj5.y34XBUfBWB4cppW', NULL);

用户名是foo,密码是foopassword,登录后在Yii::$app->user->login($user);时出现错误,

bVzaFg

回复内容:

Yii2 basic版登录使用Yii::$app->user->login($user);出现错误Array to string conversion

MyAuthenticationController.php

request->post('username',null);

$password = Yii::$app->request->post('password',null);

$user = User::findOne(['username'=>$username]);

if(($username!=null)&&($password!=null))

{

if($user!=null){

if($user->validatePassword($password)){

$this->redirect(['index']);//这里可以实现重定向

// Yii::$app->user->login($user);这是源代码,但是会出现“Array to string conversion”的错误,暂时还没有解决,所以使用上面的重定向代码来转向指定登录成功的页面

}else{

$error = 'Password validation failed';

}

}else{

$error = 'User not found';

}

}

return $this->render('login',['error'=>$error]);

}

public function actionLogout()

{

Yii::$app->user->logout();

return $this->redirect(['login']);

}

}

app\models\User.php

$id]);

}

/**

* @inheritdoc

*/

public static function findIdentityByAccessToken($token, $type = null)

{

return static::findOne(['access_token'=>$token]);

}

/**

* Finds user by username

*

* @param string $username

* @return static|null

*/

public static function findByUsername($username)

{

return static::findOne(['username'=>$username]);

}

/**

* @inheritdoc

*/

public function getId()

{

return $this->PrimaryKey();

}

/**

* @inheritdoc

*/

public function getAuthKey()

{

return $this->auth_Key;

}

/**

* @inheritdoc

*/

public function validateAuthKey($authKey)

{

return $this->getAuthKey() === $authKey;

}

/**

* Validates password

*

* @param string $password password to validate

* @return boolean if password provided is valid for current user

*/

public function validatePassword($password)

{

return Yii::$app->security->validatePassword($password,$this->password_hash);

}

public function generateAuthKey()

{

$this->auth_key = Yii::$app->security->generateRandomKey();

}

public function beforeSave($insert)

{

if(parent::beforeSave($insert)){

if($this->isNewRecord){

$this->auth_key = \Yii::$app->security->generateRandomString();

}

return true;

}

return false;

}

}

views\my-authentication\login.php

['class'=>'alert-danger'],'body'=>$error]);

};

?>

user->isGuest) { ?>

'form-control']);?>

'form-control']); ?>

'btn btn-primary']); ?>

You are authentication!

'btn btn-warning']); ?>

SQL

--

-- 表的结构 `user`

--

CREATE TABLE IF NOT EXISTS `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`username` varchar(255) NOT NULL,

`auth_key` varchar(32) NOT NULL,

`password_hash` varchar(255) NOT NULL,

`access_token` varchar(100) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--

-- 转存表中的数据 `user`

--

INSERT INTO `user` (`id`, `username`, `auth_key`, `password_hash`, `access_token`) VALUES

(1, 'foo', '', '$2a$12$hL0rmIMjxhLqI.xr7jD1FugNWEgZNh62HuJj5.y34XBUfBWB4cppW', NULL);

用户名是foo,密码是foopassword,登录后在Yii::$app->user->login($user);时出现错误,

bVzaFg

public function getId()

{

return $this->getPrimaryKey();

}

不是 PrimaryKey

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值