プラットフォームの開発プロセス中、プロジェクトはフロントエンド (フロントエンド) 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 サイトに注目してください。