在 Yii2 高级版中使用多用户身份类时,登录后面临身份对象问题



我已经在 config/main 组件下为 2 个不同的登录设置/创建了 2 个用户身份类.php:

'user' => [
'class'=>'yiiwebUser',
'identityClass' => 'frontendmodelsCustomerUser',
'enableAutoLogin' => false,
'authTimeout' => 60*30,
'loginUrl' => ['customer/login'],
'identityCookie' => [
'name' => '_panelCustomer',
'httpOnly' => true,
],
],
'franchise'=>[
'class'=>'yiiwebFranchise',
'identityClass' => 'frontendmodelsFranchiseUser',
'enableAutoLogin' => false,
'authTimeout' => 60*30,
'loginUrl' => ['franchise/login'],
'identityCookie' => [
'name' => '_panelFranchise',
'httpOnly' => true,
],
],

当我使用特许经营登录时,登录后,如果我检查Yii::$app->user->identity它会为我提供数据库中第一条记录的详细信息(反之亦然,用户登录(。我想在以特许经营身份登录时获得 nullYii::$app->user->identity

当我们在配置中添加多个身份时,请更改其idParam参数。

'user' => [
'class'=>'yiiwebUser',
'identityClass' => 'frontendmodelsCustomerUser',
'enableAutoLogin' => false,
'authTimeout' => 60*30,
'loginUrl' => ['customer/login'],
'idParam' => '__cid',
'identityCookie' => [
'name' => '_panelCustomer',
'httpOnly' => true,
],
],
'franchise' => [
'class'=>'yiiwebUser',
'identityClass' => 'frontendmodelsFranchiseUser',
'enableAutoLogin' => false,
'authTimeout' => 60*30,
'loginUrl' => ['franchise/login'],
'idParam' => '__fid',
'identityCookie' => [
'name' => '_panelFranchise',
'httpOnly' => true,
],
],

你选择用户的第一个组件,检查这个:

$user = Yii::$app->get('franchise');
$user->identity

但是,为此目的使用具有单独配置的高级模板的最佳解决方案。

https://github.com/yiisoft/yii2-app-advanced

或者,您可以使用模块并在运行时更改配置,在模块内部.php:

public function init() {
parent::init();
Yii::$app->setComponents([
'user' => [
'class'=>'yiiwebFranchise',
'identityClass' => 'frontendmodelsFranchiseUser',
'enableAutoLogin' => false,
'authTimeout' => 60*30,
'loginUrl' => ['franchise/login'],
'identityCookie' => [
'name' => '_panelFranchise',
'httpOnly' => true,
],
],
]);
}

并对另一个用户模块重复此操作。

相关内容

最新更新