Yii2 框架下 session跨域共享互通

在项目实施过程中,往往把一个大项目进行分拆成几个独立的项目,项目用完全独立的域名和文件,可以放到不同的服务器上的独立分项目。

几个子项目共用一个登录点. 原理简单来说就是服务端session 共享, 客户端跨域cookies.

在Yii2框架下只需要几部的配置就可以了:

在几个子项目下,找到config文件下的配置文件main.php

共同配置如下代码:

$host = explode('.', $_SERVER["HTTP_HOST"]);
if (count($host) > 2) {
    define('DOMAIN', $host[1] . '.' . $host[2]);
} else {
    define('DOMAIN', $host[0] . '.' . $host[1]);
}

'components' => [
          'session' => [
            'cookieParams' => ['domain' => '.' . DOMAIN, 'lifetime' => 0],
            'timeout' => 3600 * 24 * 30
        ],
        'user' => [
            'identityClass' => 'common\models\User',
            'enableAutoLogin' => true,
            'identityCookie' => ['name' => '_identity-common', 'httpOnly' => true,'domain' => '.' . DOMAIN],
        ],

]

 这里是应用在用户登录的情况,更多模式可自己探索。 

 

posted @ 2020-02-28 15:28  离岸少年  阅读(793)  评论(0编辑  收藏  举报