0

同じデータベースといくつかの機能を共有する 2 つの Django サイトがあります。各サイトには、異なる SITE_ID を持つ独自の settings.py があります。各サイトは独自の runserver プロセスで実行されています。

ユーザーがログイン中に現在のサイトへのアクセスを許可されているかどうかを確認するこのカスタム バックエンドがあります。

user_or_none = super(SiteBackend, self).authenticate(**credentials)
if user_or_none and user_or_none.get_profile().sites.filter(id=Site.objects.get_current().id).count() < 1:
    user_or_none = None

SITE_ID が自分のプロファイル (auth_user_profile_site テーブル) に格納されている場合、ユーザーはサイトにアクセスできます。

私の問題は、ユーザーがアクセスできるサイトの1つにログインすると、アクセスできない他のサイトに切り替えて、システムが彼に入ることができることです。

また、あるサイトにログインすると、別のサイトに切り替えるときに、次から取得した SITE_IDSite.objects.get_current().idがこの 2 番目のサイト ID に対応していないようで、常に最初にログインしたサイトから SITE_ID を取得しています...

サイトフレームワークの正常な動作ですか?

これらの問題を解決する方法について何か提案はありますか?

どうもありがとう

エティエンヌ

4

1 に答える 1

0

django セッション フレームワークで回答を探す必要があります。誰かがログインすると、ユーザー ID がセッションに保存されます。また、セッションは単なる一時的なストレージです (ビューでアクセスできますrequest.session)。セッション バックエンドに応じて、その他のサイトと対話できます。

ここを見て

于 2012-11-28T02:52:06.757 に答える