萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> Yii2實現多域名跨域同步登錄退出

Yii2實現多域名跨域同步登錄退出

本文詳細介紹了Yii2實現多域名跨域同步登錄退出的教程,不會的同學可以參考一下,非常實用

在平台開發過程中,項目分為前台(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,

    ],

通過上述配置後,多個二級域名間就可以實現同步登錄和退出了。

copyright © 萬盛學電腦網 all rights reserved