Yii2 高级应用,前端和后端的不同会话与子域

Posted

技术标签:

【中文标题】Yii2 高级应用,前端和后端的不同会话与子域【英文标题】:Yii2 Advanced app, different session for frontend and backend with subdomains 【发布时间】:2016-01-30 06:34:47 【问题描述】:

我的 Yii2 应用有问题。 我有一个高级应用程序,其中包含不同域(子域)上的前端和后端部分。我使用webvimark用户管理模块,但我认为问题不在它。

前端应用程序 -> domain.com 后端应用程序 -> admin.domain.com

所以我在后台登录有问题,它不工作。 我输入登录名和密码,提交表单后我再次看到登录表单。

'user' => [
        'identityClass' => 'webvimark\modules\UserManagement\models\User',
        'enableAutoLogin' => true,
        'identityCookie' => [
            'name'     => '_backendIdentity',
            'domain'     => 'admin.domain.com',
        ],
        'class' => 'webvimark\modules\UserManagement\components\UserConfig',
    ],

'session' => [
        'name' => 'BACKENDSESSID',
        'cookieParams' => [
            'domain'     => 'admin.domain.com',
        ],
    ],

有什么想法吗?

更新 #1: 我的配置位于:/backend/config/main.php更新 #2: 在子域上传输后端时出现问题

【问题讨论】:

也许你需要添加 savePath 参数 你显示的配置在哪里? 我的配置位于:/backend/config/main.php @nuriddin-rashidov 它没有帮助 您是否已在浏览器中签出会话。设置好了吗? 【参考方案1】:

好的,模块配置有问题,前端配置错误。

后端:

'user' => [
        'identityClass' => 'webvimark\modules\UserManagement\models\User',
        'enableAutoLogin' => true,
        'identityCookie' => [
            'name' => '_backendIdentity',
            'domain' => 'backend.test.dev',
        ],
        'class' => 'webvimark\modules\UserManagement\components\UserConfig',
        'on afterLogin' => function ($event) 
            \webvimark\modules\UserManagement\models\UserVisitLog::newVisitor($event->identity->id);
        ,
    ],
    'session' => [
        'name' => 'BACKENDSESSID',
        'cookieParams' => [
            'domain' => 'backend.test.dev',
        ],
    ],

前端:

'user' => [
        'identityClass' => 'webvimark\modules\UserManagement\models\User',
        'enableAutoLogin' => true,
        'identityCookie' => [
            'name'     => '_frontendIdentity',
            'path'     => '/',
        ],
        'class' => 'webvimark\modules\UserManagement\components\UserConfig',
        'on afterLogin' => function ($event) 
            \webvimark\modules\UserManagement\models\UserVisitLog::newVisitor($event->identity->id);
        
    ],
    'session' => [
        'name' => 'FRONTENDSESSID',
        'cookieParams' => [
            'path'     => '/',
        ],
    ],

【讨论】:

你有没有想过如何让代码接收功能测试适用于不同的子域?

以上是关于Yii2 高级应用,前端和后端的不同会话与子域的主要内容,如果未能解决你的问题,请参考以下文章

Yii2前端和后端之间的链接(高级模板)

在 typescript / angular2 环境和后端的 nodejs 中设置持久会话时遇到问题

跨子域访问会话(Rails 4)

无法使用 Laravel 4 与子域共享会话

Laravel 4 中的多个身份验证会话

在根域和一个特定的子域上设置会话 cookie