ホームページ  >  記事  >  バックエンド開発  >  Yii2 はマルチドメイン、クロスドメインの同期ログインと終了を実現します。

Yii2 はマルチドメイン、クロスドメインの同期ログインと終了を実現します。

高洛峰
高洛峰オリジナル
2017-02-06 16:54:051397ブラウズ

プラットフォームの開発プロセス中、プロジェクトはフロントエンド (フロントエンド) www.xxx.com とバックエンド (バックエンド) yun.xxx.com の 2 つの部分に分割され、フロントエンドとバックエンドがバインドされる可能性があることがわかっています。ドメイン名がバインドされていない場合に使用されますが、ドメイン名をバインドすると無効になります。これは、セッションのスコープが異なるためです。 2 つのドメイン名のセッション スコープは、それぞれのドメイン名にのみ制限されます。私たちの解決策は、異なる第 2 レベル ドメイン名のスコープをトップレベル ドメイン名 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);

コンポーネント部分を変更し、セッション スコープを変更します

'user' => [ 
      'identityClass' => 'common\models\User', 
      'enableAutoLogin' => true, 
      'identityCookie' => ['name' => '_identity', 'httpOnly' => true, 'domain' => '.' . DOMAIN], 
    ], 
    'session' => [ 
      'cookieParams' => ['domain' => '.' . DOMAIN, 'lifetime' => 0], 
      'timeout' => 3600, 
    ],

上記の設定後、複数の第 2 レベル ドメイン名で同時にログインおよびログアウトできるようになります。

以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

Yii2 のマルチドメインクロスドメイン同期ログインとログアウトの実装に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。