yii2 配置 redis 实现多项目 子域名间 session 共享

Eliyahr 4月前 106

导语

  • 很多时候,我们需要在一个系统里面可以跳转到另一个系统而无需再次登录(因为我们的用户是同一套),下面我们介绍一种方法,用redis来解决这个需求。如何安装redis可以查看 这里

配置共用 session

假设我们有两个网站:aaa.mamaqunaer.com bbb.mamaqunaer.com
我们要实现登录aaa.mamaqunaer.com网站后,可以直接点击链接进入 bbb.mamaqunaer.com 网站
在aaa网站和bbb网站的配置文件 components 里面 添加下面配置:

'session' => [
            'class'=>'yii\redis\Session',
            'keyPrefix'=>'mama',
            'cookieParams' => ['path' => '/', 'httpOnly' => true, 'lifetime' => 0, 'domain' => '.mamaqunaer.com'],
            'timeout' => 3600,
            'redis' => [
                'class' => 'yii\redis\Connection',
                'hostname' => '127.0.0.1',
                'password' => '123456',
                'port' => 6379,
                'database' => 0,
            ],
        ],

注:keyPrefix 是统一 Redis 存储KEY的 前缀,也可以 'keyPrefix'=>'' 清空前缀,不设置会对每个域名或浏览器访问生成一个存储KEY,这样是获取不到共享值的。cookieParams domain 设置 主域名。

配置共用登录入口

在aaa网站的配置文件 components 里面 添加下面配置:

'user' => [
            'identityClass' => 'common\models\admin\Admin',
            'identityCookie' => ['name' => '_identity', 'httpOnly' => true, 'domain' => '.mamaqunaer.com'],
            'enableAutoLogin' => true,
            'loginUrl' => 'http://aaa.mamaqunaer.com'
        ],


最新回复 (0)
    • 都市菜鸟网
      2
        立即登录 立即注册 
返回
发新帖