2

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 がユーザーをログアウトさせないようにするにはどうすればよいでしょうか?

4

1 に答える 1

-3

まあ、デフォルトのphp設定では不可能のようです(ここでは、PHPのどのバージョンを意味するかを書く必要がありますが、そうしません)

デフォルトでは、ここにチェックを入れます

これは session.use_cookies = 1session.use_only_cookies = 1デフォルトで、Cookie ベースのセッションを使用することを意味します。

また、ドメインからサブドメインに Cookie を設定することは不可能です:こちらを確認してください

これは、アプリケーションが同じ Cookie などのセッションを持つことができないことを意味します。

@AD7six で述べたように、ドメインとサブドメインに同じ Cookie を設定することは可能ですが、デフォルトの php config: を変更する必要がありますsession.cookie_domain = .domain.com

PHP の設定を変更するか、セッション ID にアプローチするか、URL を介して渡す必要があるようですが、これは醜くて安全ではないと思います

于 2013-07-24T16:19:04.550 に答える