私はエレガントなクロスドメインセッション共有ソリューション(CakePHPコミュニティに喜んで投稿します)に非常に近いですが、それを完了するには最後の微調整が必要です。
CakeのネイティブDBに裏打ちされたセッション処理はかなり欠けているように見えますが、私はそれをハックするのは嫌です。サーバーA(データベースに存在する)からアクティブなセッションID(sid)を渡してから、そのID(およびデータはそのまま)でサーバーBで新しいセッションを開始することはサポートされていないようです。
これが私が得たところです:
Security = Lowに設定し、単一サーバーのログインなどをテストして、セッションが正常に動作していることを確認します。小切手。
サーバーAからサーバーBにsid文字列を正常に渡しました。サーバーBに...
CakeSession :: id($ sid_from_server_a)を実行します。
セッションDBテーブルのデータフィールドを解析し、$ this-> Session-> write('blah'、'value')を介してアクティブなセッションに配置します。
セッションを読み直して、セッションが「完了」したことを確認しました。
しかし、新しいページに移動すると、アクティブなsidは、他のページの読み込みと同じままであるまったく異なるsidにスナップバックします(サーバーAからsidを再確立するページを更新した場合でも)。
これはクッキーの問題ですか?
何をすべきかわかりませんが、Cakeパラダイム全体をバイパスします。Cakeの開発者は、複数のドメインの周りに既存のセッションを再確立するのに役立つセッション処理を設計しなかったようです。これがDBセッションハンドラーの主なメリットの1つだと思いました。