xiaog0000 2016-02-19 14:10:33 8173次浏览 2条回复 1 0 0

想做一个多域名跨域同步登录,即在fronted.local中登录后,在backend.local网站打开时也显示登录,我在 common中components配置如下

'user' => [
    'identityClass' => 'common\models\FrontendUser',
    'enableAutoLogin' => true,
    'identityCookie' => [
        'domain' => '.local',
        'path' => '/',
        'name' => '_identity',
        'httpOnly' => true,
    ],
],
'session' => [
    'cookieParams' => [
        'domain' => '.local',
        'lifetime' => 0,
        'httpOnly' => true,
        'path' => '/',
    ],
],

结果发现在登录时cookie中没有PHPSESSID,请问时配置哪里除了问题吗?

  • 回复于 2016-02-19 14:18 举报

    debug 源码发现,$_COOKIE['PHPSESSID'] 为空导致找不到 SessionID。

  • 回复于 2016-02-22 12:24 举报

    已经解决,是domain设置的问题,二级域名必须是两个字符串以点分割
    都改为'domain' => '.test.local'即可。

    但是发现另外一个问题,我这边有三个应用,a.test.local 和b.test.local公用了一套登录账号,做的同步登录。还有个c.test.local使用另一套登录账号。
    因不能在common中配置session,故在a和b应用的main.php中都配置共同的user和session,在c应用中配置另外的user没有配置session,这样结果会a和b同步登录,但是c登录不了debug发现session是服务器共享的,故在c登录时会找到a/b的session。
    如果我在c登录之前清除掉session,能保证c登录,但是a/b已经不同步登录了,需要重新登录。
    请问有没有什么办法处理呢?

    4 条回复
    回复于 2016-03-21 19:03 回复

    能不能看看登陆操作的源码? 我最近也在搞这个多个二级域名同步登陆 ,不会玩!求带

    回复于 2016-07-12 09:44 回复

    我也不会玩。。。。求带我一个

    回复于 2016-07-14 17:30 回复

    我觉的只需要在common中配置session的domain就够了

    回复于 2016-07-30 09:07 回复

    楼主,最后你是怎么解决这个问题的,我只要a和b同步登陆就行,c不受影响,这个你是怎么解决 的?

您需要登录后才可以回复。登录 | 立即注册