gpt4 book ai didi

php - Yii 2 模块中的独立用户实例

转载 作者:可可西里 更新时间:2023-10-31 23:08:41 25 4
gpt4 key购买 nike

我在数据库中有两个不同的用户表(编辑者和用户)。如您所知,用户表和编辑器表仅在模块中使用。

我使用 this way在 Yii 1.1 中将用户实例与模块和主应用程序分开。

但我在 yii 2 中找不到方法。我尝试扩展 yii\web\User 并更改模块中的用户类,但结果相同。如果我在模块中登录,则可以从模块外和任何地方访问相同的用户实例。

我的模块初始化是这样的:

public function init()
{
parent::init();

\Yii::$app->set('user', [
'class' => 'app\modules\yonetim\components\yonetimUser',
'identityClass' => 'app\models\Editor',
'enableAutoLogin' => true,
'loginUrl' => ['yonetim/default/login'],
]);
}

我也尝试过这种方式;在 config.php 中

'components' => [
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
'editor' => [
'class' => 'yii\web\User',
'identityClass' => 'app\models\Editor',
'enableAutoLogin' => true,
],
],

但是这次我不使用授权角色(比如@)

如何在我的模块中使用不同的用户实例?

最佳答案

我为不同的登录实例找到了另一种方法。 Yii2 使用 session id 参数进行身份验证。所以我们需要改变它。

将您的 modules\module_name\module_name.php 文件更改为如下所示:

public function init()
{
parent::init();

Yii::$app->set('user', [
'class' => 'yii\web\User',
'identityClass' => 'app\models\Editor',
'enableAutoLogin' => false,
'loginUrl' => ['yonetim/default/login'],
'identityCookie' => ['name' => 'editor', 'httpOnly' => true],
'idParam' => 'editor_id', //this is important !
]);
}

yii\web\User 中默认定义的 idParam 值:$idParam = '__id';因此,如果我们更改此值,应用程序和模块将使用不同的用户实例。

关于php - Yii 2 模块中的独立用户实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28928806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com