ホームページ バックエンド開発 PHPチュートリアル Yii2 でのドメイン名間のセッション共存の問題を解決する方法

Yii2 でのドメイン名間のセッション共存の問題を解決する方法

Jun 15, 2018 am 10:26 AM
session yii2 クロスドメイン

この記事では、主に Yii2 でのセッションのクロスドメイン名共存のソリューションを紹介します。内容が非常に優れているので、参考として共有します。

開発中に、ドメイン間で共有する必要があるログイン モジュールは、多くの開発者が遭遇したことがあると思います。ログを記録する場所は 1 つだけです。にログインし、関連する Web サイトにもログインしています。 9streets.cn と a.9streets.cn の間の場合と、a.com と b.com の間の場合の 2 つの状況があり、ここ数日の対処方法をまとめました。

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

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

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

1. 共通の sessionId にアクセスするには、主に現在の sessionId を 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. セッション データの一貫した保存場所を実現する方法

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

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

フロントエンドの構成フォルダーの 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' => [
  'enableAutoLogin' => true,
  'identityCookie' => ['name' => '_identity', 'httpOnly' => true, 'domain' => '.' . DOMAIN],
],
'session' => [
  'cookieParams' => ['domain' => '.' . DOMAIN, 'lifetime' => 0],
  'timeout' => 3600,
],
ログイン後にコピー

これは、次のユーザーとセッションにあります。設定項目 ドメインを書き留めます。例: 'domain'=>'.baidu.com'。

上記は内容全体です。この記事が皆さんの学習に役立つことを願っています。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

Yii フレームワークでの jquery の使用に関する関連問題

以上がYii2 でのドメイン名間のセッション共存の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

SpringBootセッションでセッションタイムアウトを設定する方法 SpringBootセッションでセッションタイムアウトを設定する方法 May 15, 2023 pm 02:37 PM

Springboot プロジェクトの本番環境のセッションアウト タイムアウトで問題が見つかりました。問題の説明は次のとおりです: テスト環境では、application.yaml を変更することでセッションアウトが構成されていました。別の時間を設定してセッションアウト構成を確認した後、有効期限がリリース時に直接 8 時間に設定され、運用環境に到着しました。しかし、正午にお客様から、プロジェクトの有効期限が短く設定されており、30分操作がないとセッションが期限切れになり、再度ログインが必要になるというフィードバックをいただきました。開発環境の扱いの問題を解決します。springboot プロジェクトには Tomcat が組み込まれているため、プロジェクト内の application.yaml で設定されたセッションアウトが有効になります。本番環境: 本番環境リリースは

セッション失敗を解決する方法 セッション失敗を解決する方法 Oct 18, 2023 pm 05:19 PM

セッション障害は通常、セッションの有効期間の期限切れまたはサーバーのシャットダウンによって発生します。解決策: 1. セッションの有効期間を延長する; 2. 永続ストレージを使用する; 3. Cookie を使用する; 4. セッションを非同期的に更新する; 5. セッション管理ミドルウェアを使用する。

PHP セッションのクロスドメイン問題の解決策 PHP セッションのクロスドメイン問題の解決策 Oct 12, 2023 pm 03:00 PM

PHPSession のクロスドメイン問題の解決策 フロントエンドとバックエンドの分離の開発では、クロスドメイン要求が標準になっています。クロスドメインの問題に対処するときは、通常、セッションの使用と管理が必要になります。ただし、ブラウザーのオリジンポリシーの制限により、デフォルトではセッションをドメイン間で共有できません。この問題を解決するには、いくつかの技術と方法を使用して、セッションのクロスドメイン共有を実現する必要があります。 1. ドメイン間でセッションを共有するための Cookie の最も一般的な使用法

Springboot2のセッションタイムアウト設定が無効になる問題の解決方法 Springboot2のセッションタイムアウト設定が無効になる問題の解決方法 May 22, 2023 pm 01:49 PM

問題: 今日、プロジェクトで設定タイムアウトの問題が発生し、SpringBoot2 の application.properties への変更が反映されませんでした。解決策:server.* プロパティは、SpringBoot によって使用される埋め込みコンテナーを制御するために使用されます。 SpringBoot は、ServletWebServerFactory インスタンスの 1 つを使用してサーブレット コンテナのインスタンスを作成します。これらのクラスは、server.* プロパティを使用して、制御されるサーブレット コンテナ (tomcat、jetty など) を構成します。アプリケーションが war ファイルとして Tomcat インスタンスにデプロイされる場合、server.* プロパティは適用されません。それらは当てはまりませんが、

Redis 共有セッション アプリケーションに SMS ログインを実装する方法 Redis 共有セッション アプリケーションに SMS ログインを実装する方法 Jun 03, 2023 pm 03:11 PM

1. セッションに基づく SMS ログインの実装 1.1 SMS ログインのフローチャート 1.2 SMS 検証コード送信の実装 フロントエンド リクエストの説明: リクエスト メソッドの説明 POST リクエスト パス /user/code リクエスト パラメータ 電話 (電話番号) 戻り値 バックエンド インターフェイスなし実装: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1。次の場合は携帯電話番号を確認します。

JavaScript Cookie と PHP Cookie の違いは何ですか? JavaScript Cookie と PHP Cookie の違いは何ですか? Sep 02, 2023 pm 12:29 PM

JavaScriptCookies JavaScript Cookie の使用は、設定、購入、手数料、その他の情報を記憶および追跡する最も効果的な方法です。訪問者のエクスペリエンスを向上させるために必要な情報やウェブサイトの統計。 PHPCookieCookie は、クライアント コンピューターに保存され、追跡目的で保持されるテキスト ファイルです。 PHP は HTTP Cookie を透過的にサポートします。 JavaScript Cookie はどのように機能しますか?サーバーは、訪問者のブラウザに Cookie の形式でデータを送信します。ブラウザは Cookie を受け入れることができます。存在する場合、それは訪問者のハードドライブにプレーンテキストレコードとして保存されます。さて、訪問者がサイト上の別のページに到達すると、

Vue でクロスドメインリクエストを行うにはどうすればよいですか? Vue でクロスドメインリクエストを行うにはどうすればよいですか? Jun 10, 2023 pm 10:30 PM

Vue は、最新の Web アプリケーションを構築するための人気のある JavaScript フレームワークです。 Vue を使用してアプリケーションを開発する場合、多くの場合、異なるサーバー上にあるさまざまな API と対話する必要があります。クロスドメイン セキュリティ ポリシーの制限により、Vue アプリケーションが 1 つのドメイン名で実行されている場合、別のドメイン名の API と直接通信することはできません。この記事では、Vue でクロスドメイン リクエストを行うためのいくつかの方法を紹介します。 1. プロキシを使用する 一般的なクロスドメイン ソリューションは、プロキシを使用することです。

PHP を使用して複数のファイルのセッション データを正しく読み書きする方法 PHP を使用して複数のファイルのセッション データを正しく読み書きする方法 Mar 23, 2023 am 11:12 AM

PHP セッション (Session) を使用していると、あるファイルではセッションが正常に読み取れるのに、別のファイルではセッションが読み込めない場合があります。セッション データはアプリケーション全体で共有されることになっているため、混乱するかもしれません。この記事では、複数のファイルの PHP セッション データを正しく読み書きする方法を説明します。

See all articles