php - 在 Yii2 Advanced 中使用多用户身份类时,登录后面临身份对象问题
问题描述
我在 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
当我以特许经营权登录时,我想为空。
解决方案
您选择用户的第一个组件,请检查:
$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,
],
],
]);
}
并对另一个用户模块重复此操作。
推荐阅读
- javascript - Error while trying to use
in ngx-openlayers - ansible - Ansible - 如何复制启用了差异的模块显示内容和模式差异?
- python - 无干扰地刷新 tkinter 窗口
- symfony - 如何使用邮件包为 symfony 设置 smtp 连接?
- android - 如何正确使用 ListView 数组适配器在 Kotlin 中显示来自 Firebase 数据库的数据?
- r - 在 Shiny 中寻求关于 renderPlot 的解释
- c# - API 发布到多个表
- gradle - 常量被替换后从 build.gradle 获取数据
- javascript - 无法在 Reactjs 中有条件地呈现 HTML UL
- mysql - 我可以在 kubernetes 上使用 docker compose mysql + spring boot 容器吗?