在平台開發過程中,項目分為前台(frontend)www.xxx.com和後台(backend) yun.xxx.com兩部分,綁定兩個域名, 我們知道在沒有綁定域名的時候前後台可以同步登錄和退出,但是綁定域名後就失效了,原因是session的作用域不同了。 兩個域名的session作用域都只限制在了自己的域名上,我們的解決辦法是將不同二級域名的作用域都改成頂級域名xxx.com。
在common/config/main.PHP裡面增加如下代碼:
代碼如下復制代碼//跨域session域名配置,獲取當前主機名
$host_array=explode('.',$_SERVER["HTTP_HOST"]);
//針對com域名,獲取頂級域名
if(count($host_array) == 3) {
define('DOMAIN',$host_array[1] .'.'.$host_array[2]);
}
//針對com.cn域名
elseif(count($host_array) == 4) {
define('DOMAIN',$host_array[1] .'.'.$host_array[2].'.'.$host_array[3]);
}
else{
//echo "本系統不支持本地訪問,請配置域名";exit;
}
define('DOMAIN_HOME','www.'. DOMAIN);
define('DOMAIN_YUN','yun.'. DOMAIN);
define('DOMAIN_API','api.'. DOMAIN);
define('DOMAIN_EMAIL','mail.'. DOMAIN);
define('DOMAIN_IMG','img.'. DOMAIN);
修改components部分,改變session作用域
代碼如下復制代碼'user'=> [
'identityClass'=>'common\models\User',
'enableAutoLogin'=> true,
'identityCookie'=> ['name'=>'_identity','httpOnly'=> true,'domain'=>'.'. DOMAIN],
],
'session'=> [
'cookieParams'=> ['domain'=>'.'. DOMAIN,'lifetime'=> 0],
'timeout'=> 3600,
],
通過上述配置後,多個二級域名間就可以實現同步登錄和退出了。