Yii中配置单点登录 即多个子站同步登录

研究Yii的同步登录大概2个多月,几乎查遍了网上所有资料和案例,但都不是很理想,最后摸索出整理出来以下配置方案。

 

以下配置文件在config.php中,所有需要同步的站点都需要填写。网上一些站点给出的有的只是一部分,导致我走了很多弯路,经过N次测试后,确定以下方案是完美的。

'components'=>array(  

    'user'=>array(  

        //'class'=>'CWebUser',//你可以自定义你的Cwebuser  

        'identityCookie'=>array('domain' => '.domain.cc','path' => '/'),//配置用户cookie作用域  

        // enable cookie-based authentication  

        'allowAutoLogin'=>true,//允许同步登录  

        'stateKeyPrefix'=>'yourprefix',//你的前缀,必须指定为一样的  

        'loginUrl'=>array('/user/login'),  

    ),  

    'session' => array(  

        'cookieParams' => array('domain' => '.domain.cc', 'lifetime' => 0),//配置会话ID作用域 生命期和超时  

        'timeout' => 3600,  

        //这里千万不要指定cookieMode => none,否则无法对应sessionid导致无法登录,更别说同步了。(有些不负责的博客竟然说同步登录需要设定这个属性为none!!!!太坑爹了。。。)  

    ),   

    'statePersister'=>array( //指定cookie加密的状态文件  

        'class'=>'CStatePersister',//指定类       

        'stateFile'=>'../CommonLib/protected/runtime/state.bin',//配置通用状态文件路径,注意,如果你的站点是分布式的,你必须把该文件复制一份到不同服务器上,否则无法跨域。因为里面有个通用密钥,密钥不同则无法验证身份。  

    ),  

 

再?嗦一句 protect/runtime目录的权限必须是777

 

ok,这应该是最完美的方案。

原文地址:http://blog.csdn.net/a605356316/article/details/7771642(已失效)

posted @ 2016-08-10 22:08  ec04  阅读(323)  评论(0编辑  收藏  举报