在我的控制器中,我有以下代码:
public function init()
{
parent::init();
Yii::$app->user->identity // NULL ???
}
public function actionIndex()
{
Yii::$app->user->identity // Identity object!
}
在我的配置中:
...'authManager' => [
'class' => 'yiirbacDbManager',
'defaultRoles' => ['guest'],
],
'user' => [
'identityClass' => 'appmodulesusermodelsUser',
'enableAutoLogin' => true,
'enableSession' => false,
'loginUrl' => null,
], ...
是否可以在初始化上获得身份?
我刚刚测试了在控制器方法中获取用户身份init()
它工作正常。
当用户是访客(未登录)时,将返回null
,因此请检查这一点。
public function init()
{
parent::init();
var_dump(Yii::$app->user->isGuest, Yii::$app->user->identity);
exit();
}
您需要检查用户是否使用
Yii::$app->user->isGuest
如果它返回 true,则表示当前用户是访客,即用户尚未登录,您可以选择将用户重定向到您的登录页面。
public function init()
{
parent::init();
if (!Yii::$app->user->isGuest) {
return true;
}
return $this->redirect(['/user/security/login']);//redirect to user login page
}
同样,还有一个很棒的yii2扩展,它具有以下用户管理功能。
- 通过每封邮件的可选确认进行注册
- 通过社交网络注册
- 密码恢复
- 帐户和个人资料管理
- 控制台命令
- 用户管理界面
https://github.com/dektrium/yii2-user