YII的资料实在是太少了。为了让后来者减少摸索时间,我写下我的解决方法。
a.meylou.com和b.meylou.com不做登录。c.meylou.com这个专门做用户登录。c站登录之后a,b站点同时登录。
第一步:修改php.ini配置文件,把cookie_domain=改成“cookie_domain=meylou.com”
第二部:修改各个站点的config 文件:components节点->user节点->加上'stateKeyPrefix'=>'你的前缀',最后大概是这样的:
'components'=>
array(
'user' => array(
'allowAutoLogin' => true,
'stateKeyPrefix'=>'yourfix',
),
'user' => array(
'allowAutoLogin' => true,
'stateKeyPrefix'=>'yourfix',
),
)
第三部: 修改各个站点的config 文件:components节点加上statePersister节点,最后大概是这样的:
'components'=>array(
'statePersister'=>
array(
'class'=>'system.base.CStatePersister',
'stateFile'=>'/protected/runtime/state.bin',
),
),
'class'=>'system.base.CStatePersister',
'stateFile'=>'/protected/runtime/state.bin',
),
),
OK了。解释下:
第一步,确保PHPSESSIDn能在各个二级域名下通用。这样SESSION就能共享了!
第二部,确保每个站点验证登录信息的时候用同样的前缀。
第三部,YII验证有一个state.bin保存了HASH,他要读取这个,把state.bin共用就好了!