2009-08-21 12 views
1

私はメインサイトexample.comを持っています。ここでユーザーは登録してログインするか、openidでログインするだけです。 ログインしたユーザーは、mysite.example.comなどのサブドメインを使用して独自のサイトを作成できます。 すべてのユーザーは複数のサイトを持つことができます。 すべてのサイトはcakephpアプリです。 すべてのケーキアプリには独自のACLがあります。複数のcakephpアプリケーション間で認証を展開する方法は?

ユーザーがメインサイトにログインし、自分のサイトにもログインするように、認可を展開するにはどうすればよいですか。ここ

答えて

1

二つの主要な要件:

  1. クライアント側のクッキーは、すべてのアプリケーション

    チェック、クライアント側でのCakePHPで設定されたクッキーをするために有効にする必要がある(FireCookieは、このために良いです)。サブドメインに適用するには、domainのクッキーの一部に.example.comwww.example.comではなく)を読み込む必要があります。これはbootstrap.phpに働くかもしれない:

    ini_set('session.cookie_domain', '.example.com'); 
    
  2. サーバー側のセッションストレージは、各アプリケーションのcore.php内のすべてのアプリケーション

    をすることによってアクセスできる共通のセッションストレージを設定する必要があります。オプションは次のとおりです。

    • php:これは、すべてのアプリケーションに対して同じであるべきである、PHP定義されたセッションの格納ディレクトリを使用します。
    • database:すべてのアプリケーションが同じデータベースを使用している場合、これはオプションになる可能性があります。
    • cake:これを機能させるには、アプリケーションごとに共通の/tmpディレクトリを定義する必要があります。
+0

ここに私の考えがあります。 ini_set( 'session.cookie_domain'、 '.example.com') - これはConfigure :: write( 'Security.level'、 'low');だけです。 2.(サーバー側)に関しては、すべてのアプリケーションの共通セッション記憶域を有効にするということは、アプリケーションレベルでアプリケーションへのアクセスを制御しなければならず、ACLで混乱する可能性があることを意味します。アプリケーションの用語ごとにデータベースにセッションを保存し、特定のユーザーに属する他のアプリケーションにシステムを介して配布することが最善の方法だとわかりました。 –

+0

1.3と2.xの共通セッションを使用できますか? –

+0

可能でしょう。 'Config/Schema/sessions.php'は両方のバージョンで同じように見えます。 – deizel

関連する問題