플랫폼 개발 과정에서 프로젝트는 프런트엔드(frontend) www.xxx.com과 백엔드(backend) yun.xxx.com의 두 부분으로 나누어집니다. 바인딩되지 않은 경우 백그라운드는 동기적으로 로그인 및 로그아웃할 수 있지만 도메인 이름을 바인딩한 후에는 세션 범위가 다르기 때문에 유효하지 않습니다. 두 도메인 이름의 세션 범위는 자체 도메인 이름으로만 제한됩니다. 우리의 솔루션은 서로 다른 두 번째 수준 도메인 이름의 범위를 최상위 도메인 이름 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차 도메인 이름 간에 동기식 로그인 및 로그아웃이 가능합니다.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.
Yii2의 다중 도메인 간 도메인 동기화 로그인 및 로그아웃 구현과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!