CakePHP 1.3 で構築されたレガシー アプリケーションを置き換えるために、Symfony2 でアプリを構築しています。これは大きなアプリケーションであり、エンド ユーザーのニーズを満たすために、新しいアプリケーションをレガシー アプリケーションと並行して実行することが決定されました。古いシステムの機能が Symfony2 で書き直されると、ユーザーはシームレスに新しいアプリケーションに移動します。 .
中断を最小限に抑えるために、ユーザーは古いアプリケーションに 1 回ログインするだけでよく、新しいアプリケーションはログインしているかどうかに応じてユーザーにのみアクセスを許可することも決定されました。そのため、新しいアプリケーションは古いアプリケーションに依存してセキュリティを処理します。さらに、古い CakePHP アプリケーションは にwww.domain.org
あり、新しい Symfony2 アプリはサブドメインにありnew.domain.org
ます。
私が今抱えている問題は、Symfony2 で CakePHP で作成されたセッションを正確に使用する方法です。ユーザーのIDをCookieに書き込み、Symfony2にCookieが設定されているかどうかを確認させるなど、いくつか試しました。これを行うと、ユーザーは古いシステムから新しいシステムに移動できますが、古いシステムへのリンクが新しいシステムからクリックされるとすぐに、古いシステムがユーザーを起動し、再度ログインするように求めます。
CakePHP 1.3 コードでは、すべての領域の先頭に次のコードがあります。
$this->checkSession();
私は CakePHP 1.3 アプリケーションを作成したことがなく、CakePHP 1.3 の実用的な知識もありません (CakePHP 2.0 については知っています)。そのため、少し掘り下げたところ、core.php
次のようなセッションの構成をファイルで見つけました。
Configure::write('Session.cookie', 'DOMAIN');
Configure::write('Session.timeout', '120');
Configure::write('Session.start', true);
Configure::write('Session.checkAgent', true);
Configure::write('Security.level', 'medium');
Configure::write('Security.salt', '***RANDOM STRING***');
Configure::write('Security.cipherSeed', '***RANDOM STRING***');
ACL のコードもいくつかありますが、これにはあまり含まれていないか、何もしていないようです。これらは:
Configure::write('Acl.classname', 'DbAcl');
Configure::write('Acl.database', 'default');
CakePHP のコードの一部を変更して、Symfony で動作するように変更することはできますが、コードを大幅に変更することはできません。CakePHP 1.3 を構築した以前のプログラマーは、長い間姿を消し、ドキュメントも残していません。
では、Symfony2 に CakePHP が作成して使用するのと同じセッションを使用させ、新しいアプリケーションからのリンクをクリックした場合に CakePHP がユーザーをログアウトさせないようにするにはどうすればよいでしょうか?