为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
翻阅古今 2023-06-24 18:15:48
我在 config/main.php 组件下为 2 个不同的登录设置/创建了 2 个用户身份类:'user' => [            'class'=>'yii\web\User',            'identityClass' => 'frontend\models\CustomerUser',            'enableAutoLogin' => false,            'authTimeout' => 60*30,            'loginUrl' => ['customer/login'],            'identityCookie' => [                'name' => '_panelCustomer',                'httpOnly' => true,            ],        ],        'franchise'=>[            'class'=>'yii\web\Franchise',            'identityClass' => 'frontend\models\FranchiseUser',            'enableAutoLogin' => false,            'authTimeout' => 60*30,            'loginUrl' => ['franchise/login'],            'identityCookie' => [                'name' => '_panelFranchise',                'httpOnly' => true,            ],        ],当我使用特许经营权登录时,登录后如果我检查Yii::$app->user->identity它会为我提供数据库中第一条记录的详细信息(用户登录反之亦然)。Yii::$app->user->identity当我以特许经营身份登录时,我想获取 null 。
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

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


'user' => [

            'class'=>'yii\web\User',

            'identityClass' => 'frontend\models\CustomerUser',

            'enableAutoLogin' => false,

            'authTimeout' => 60*30,

            'loginUrl' => ['customer/login'],

            'idParam' => '__cid',

            'identityCookie' => [

                'name' => '_panelCustomer',

                'httpOnly' => true,

            ],

        ],

        'franchise' => [

            'class'=>'yii\web\User',

            'identityClass' => 'frontend\models\FranchiseUser',

            'enableAutoLogin' => false,

            'authTimeout' => 60*30,

            'loginUrl' => ['franchise/login'],

            'idParam' => '__fid',

            'identityCookie' => [

                'name' => '_panelFranchise',

                'httpOnly' => true,

            ],

        ],


查看完整回答
反对 回复 2023-06-24
?
跃然一笑

TA贡献1826条经验 获得超6个赞

您选择用户的第一个组件,检查以下内容:


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

$user->identity

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


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

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


public function init() {

    parent::init();

    Yii::$app->setComponents([

        'user' => [

            'class'=>'yii\web\Franchise',

            'identityClass' => 'frontend\models\FranchiseUser',

            'enableAutoLogin' => false,

            'authTimeout' => 60*30,

            'loginUrl' => ['franchise/login'],

            'identityCookie' => [

                'name' => '_panelFranchise',

                'httpOnly' => true,

            ],

        ],

    ]);

}

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


查看完整回答
反对 回复 2023-06-24
  • 2 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信