首頁  >  文章  >  後端開發  >  Yii2實現多域名跨域同步登入退出

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

高洛峰
高洛峰原創
2017-02-06 16:54:051416瀏覽

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

透過上述設定後,多個二級網域間就可以實現同步登入和退出了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持PHP中文網。

更多Yii2實現多網域同步登入退出相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn