在我的控制器中,我有这段代码:
public function init()
{
parent::init();
Yii::$app->user->identity // NULL ???
}
public function actionIndex()
{
Yii::$app->user->identity // Identity object!
}
在我的配置中:
...'authManager' => [
'class' => 'yii\rbac\DbManager',
'defaultRoles' => ['guest'],
],
'user' => [
'identityClass' => 'app\modules\user\models\User',
'enableAutoLogin' => true,
'enableSession' => false,
'loginUrl' => null,
], ...
可以在init上获得身份吗?
答案 0 :(得分:1)
我刚刚测试了在控制器的init()
方法中获取用户身份,它运行正常。
null
,因此请检查。
public function init()
{
parent::init();
var_dump(Yii::$app->user->isGuest, Yii::$app->user->identity);
exit();
}
答案 1 :(得分:0)
您需要检查用户是否使用
登录Yii::$app->user->isGuest
如果返回true,则表示当前用户为guest,即用户尚未登录,您可以选择将用户重定向到登录页面。
public function init()
{
parent::init();
if (!\Yii::$app->user->isGuest) {
return true;
}
return $this->redirect(['/user/security/login']);//redirect to user login page
}
在同一个音符上有一个很棒的yii2扩展,它具有以下用户管理功能。