これは簡単なティップですが、ドキュメントとしてここに記しておきます。ドメインの異なる CakePHP サイトでセッションを共有する方法を紹介します。
2つのドメインの異なるサイト siteA.com と siteB.com があるとします。siteA.com にいるログイン認証済みのユーザがあるリンクをクリックして siteB.com へ移動するとき、セッション情報を保持したままリダイレクトするようにします。
まず、設定する項目がいくつかあります。
- siteB.com のコアファイル (/app/config/core.php) の 'Security.level' を 'low' に設定します。 'high' and 'medium' に設定すると、埋め込まれたセッションID は無効だと判断されます。
- セッション・ハンドリング・メソッド(app/config/core.php 内の 'Session.save') を 'php' か 'database' にします。siteA.com と siteB.com のセッション・ハンドリング・メソッド (Session.save) を同じにする必要があります。2つのサイトが同じセッションストーレッジを使用してセッションを共有するようにします。
- 両サイトとも同じ Security.salt (/app/config/core.php) を使用します。
echo $html->link('Go to siteB.com', "http://siteB.com/tests/index?sid=" . $session->id() );受け手側の siteB.com の任意のコントローラ、beforeFilter メソッド内で, $this->Session->id($this->params['url']['sid']) を使います。
function beforeFilter() { if (!empty($this->params['url']['sid'])) { $this->Session->id($this->params['url']['sid']); } }ユーザが siteA.com のリンクをクリックすると、siteB.com へリダイレクトして、パラメータとして渡されたセッションIDから新しいセッションIDを生成します。
0 コメント:
コメントを投稿