15

foo.com と bar.com という 2 つのサイトがあり、どちらも Django ベースです。一次登録は foo.com で行われ (メイン ユーザー データベースがここにあることを望みます)、次の 3 つのことを実行したいと考えています。

1) foo.com にログインしたユーザーは、再度ログインしなくても自動的に bar.com にアクセスできます。

2) bar.com に直接ログインするユーザーは、foo.com ユーザー db に対して認証されます。

3) ユーザーが直接 bar.com に登録する必要はありません。

どうすればこれを達成できますか?物事を大幅に簡素化する場合は、bar.com を foo.com のサブドメイン (例: bar.foo.com) にすることができますが、それらは別のサイトでなければなりません。

4

4 に答える 4

6

3 番目の要件は、2 つのサイト間で同じデータベースを共有することで簡単に解決できます (したがって、同じ Users テーブルを使用します。

最初の要件は、クロスドメインの問題 (セッション Cookie が共有されない) のため、注意が必要です。

あなたが本当に求めているのは、シングル サインオン (SSO)です。あなたはdjango-openid を検討するかもしれません。

于 2009-10-17T07:02:04.093 に答える
5

私は非常によく似た問題を抱えていましたが、OpenID は実行可能な解決策ではありませんでした。django >1.2 で複数のデータベースが登場したことで、セッションとログイン データをサイト間で簡単に共有できるようになりました。このブログ投稿では、セットアップ方法を説明しています。うまくいけば、他の人もこれが私と同じくらい役立つと思うでしょう。

于 2011-07-12T01:32:38.830 に答える
0

あなたが探しているのは設定だと思いますSESSION_COOKIE_DOMAIN。次のように設定します。

SESSION_COOKIE_DOMAIN = 'foo.com'

詳細については、 http://docs.djangoproject.com/en/dev/topics/http/sessions/#session-cookie-domainを参照してください。これは、両方のアプリケーションが同じセッション ストレージ バックエンドを使用していることを前提としています。

于 2009-10-17T07:13:48.863 に答える