如何使会话/ cookie在Yii中的所有子域中工作

时间:2011-09-27 17:51:57

标签: php yii

我有几个子域名,例如'a.domain.com','b.domain.com',但我发现如果我在子域名a登录,会话/ cookie将无法在b中运行,我必须再次登录在'b.domain.com'

如何在所有子域中使登录会话正常工作?

更新

我发现每个子域都有不同的会话ID ...

更新

我发现我只能登录几个像'bench'和'post'这样的domians,但无法登录'book'和其他域名。真奇怪。

2 个答案:

答案 0 :(得分:8)

你可以在yii config / main.php 文件中设置它,就像我一样。 (我不确定你是否还需要更改php.ini文件,但我会说“不”,因为下面的配置解决了我的问题)。

<强>保护/配置/ main.php

...
'components' => array( 
    ...        
    'user'=>array(
        ...    
        'identityCookie' => array('domain' => '.mydomain.com', //note dot before domain name 
        // identityCookie same as "session->cookieParams->domain"
    ),
    'session' => array(
        'autoStart'=>true,
        'cookieParams' => array('domain' => '.mydomain.com'),
    ),
    ...
)
...

答案 1 :(得分:3)


您可以使用PHP的session.cookie_domain值并将其设置为您的顶级域名(.domain.com)。通过编辑php.ini或使用ini_set进行设置(&#39; session.cookie_domain&#39;,&#39; .domain.com&#39;);

祝你好运:) 晒。