ホームページ バックエンド開発 PHPチュートリアル Yii2 でのセッションのクロスドメイン名共存のためのソリューション

Yii2 でのセッションのクロスドメイン名共存のためのソリューション

Feb 06, 2017 pm 04:57 PM

先ほどセッション関連の設定について説明しましたが、開発中にドメイン間でセッションを共有するためにログイン モジュールが必要になることがよくあります。ログインに必要な場所は 1 つだけで、関連する Web サイトも必要になります。ログイン状態。 9streets.cn と a.9streets.cn の間の場合と、a.com と b.com の間の場合の 2 つの状況があり、ここ数日の対処方法をまとめました。

第 1 レベルと第 2 レベルのドメイン名であっても、異なるドメイン名のクロスドメインであっても、次の 2 つの点を達成する必要があります:

クライアントは同じ sessionId にアクセスします。

アクセスされるセッション データの場所すべてのドメイン名に対応するサーバーは一貫している必要があります。

1. 共通の sessionId へのアクセスは、主に現在の sessionId を Cookie に書き込むことによって行われます。

Cookie には、ユーザーがログインするときにバックグラウンドで共有する必要があるログインを設定する必要があります。情報のドメイン名が第 1 レベルまたは第 2 レベルのドメイン名の下にある場合は、Cookie をメインのドメイン名に直接設定します (例:

setcookie("session_id",session_id(),time()+3600*24*365*10,"/",".a.com");
ログイン後にコピー

)。ドメイン名が違う?これは、P3P テクノロジーを使用したシンプルなソリューションであり、Web サイト x.com にアクセスすると、y.com プログラムが y.com ファイルへの sessionid 値の書き込みをトリガーし、sessionid 値を取得できます。セッション値はデータベースに保存されており、同じ値が取得されるので、sessionid 値で十分です。これには、y.com のプログラム ファイルがドメイン間でアクセスできる必要があります。デフォルトでは、ブラウザーはドメイン間で Cookie を設定できません。p3p ヘッダーを追加する必要があります。対応する PHP ファイルに追加します: header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');

2. 一貫したセッション データの保存場所を実現する方法

セッションデータは、デフォルトではサーバーのメモリに保存されるのではなく、ファイルの形式で保存されます。ここでは、すべてのドメインでアクセスできるように変更する必要があります。データベースストレージ、ファイルストレージ、メモリストレージをオンラインで導入し、セッションデータの保存にデータベースを使用し、Webサイトへのアクセス数が多い場合、データベース上でSESSIONの読み書きが頻繁に発生し、効率が大幅に低下します。次の session.rar では、メモリの存在が考慮されます。

yii2 でこの問題に対処するには、インターネット上にあるチュートリアルによると、最終的に成功した構成は次のようになります:

フロントエンドの config フォルダーの main.php で

$host = explode('.', $_SERVER["HTTP_HOST"]);
if (count($host) > 2) {
  define('DOMAIN', $host[1] . '.' . $host[2]);
} else {
  define('DOMAIN', $host[0] . '.' . $host[1]);
}
define('DOMAIN_HOME', 'www.' . DOMAIN);
define('DOMAIN_USER_CENTER', 'man.' . DOMAIN);
define('DOMAIN_API', 'api.' . DOMAIN);
define('DOMAIN_EMAIL', 'mail.' . DOMAIN);
define('DOMAIN_LOGIN', 'login.' . DOMAIN);
define('DOMAIN_IMG', 'img.' . DOMAIN);
ログイン後にコピー

を構成し、次に User とセッション:

'user' => [
  'enableAutoLogin' => true,
  'identityCookie' => ['name' => '_identity', 'httpOnly' => true, 'domain' => '.' . DOMAIN],
],
'session' => [
  'cookieParams' => ['domain' => '.' . DOMAIN, 'lifetime' => 0],
  'timeout' => 3600,
],
ログイン後にコピー

ここでは、設定項目のユーザーとセッションにドメインを書き込みました。例: 'domain'=>'.baidu.com' なので、判断する必要はありません。

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

Yii2 でのセッションのクロスドメイン共存のソリューションに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles