6

私は現在、ユーザーが複数の「アカウント」を持つことができるDjangoサイトを開発しています。そのため、サイトを介して相互作用するときに、異なるパブリックプロファイルをシームレスに切り替えることができます。私が設計しているのは、1人につき複数の登録を引き付ける可能性が高いからです(落胆させたくありません)。私はちょうど、プロファイルをつなぎ合わせて、簡単に切り替えることができ、ログをとるだけの方法でこれを提供したいと思います一度に私がこれまでにアップ考えたDjangoマルチユーザログイン - 最善の方法ですか?

2つのアプローチが含まれます:

  • ワン(Userモデル+ SiteProfileモデル)のペアと一人あたりの多くのPublicProfileモデル。 AUTH_PROFILE_MODULESiteProfileモデルを指すように設定されています。これは、オブジェクト単位のアクセス許可を簡単に使用できないということです。これらは、公開プロファイルではなくUserオブジェクトで設定されるため、「PublicProfileA」のページを表示する権限は、ユーザーがマスカレードしているときにも適用されます"PublicProfileB"とします。

  • 1人あたりAccountモデルと多数(Userモデル+ UserProfileモデル)のペア。 AUTH_PROFILE_MODULEはモデルを指すように設定されています。これにより、意図したとおりに動作するアクセス許可の利点が得られます。また、外部キーと同じAccountオブジェクトを持つ別のユーザーとして現在ログインしている場合にユーザーを認証してユーザーを切り替えるカスタムバックエンドを使用できます。しかし、Accountオブジェクトのフィールドを読み取ることで認証が行われるため、Userオブジェクトのpasswordフィールドが無駄になります。

  • 上記と同様ですが、サブクラスAccountUserです。私はこれに対して強くアドバイスされてきました(不明な理由のため)。

これにはどんな落とし穴がありますか?最終的には、組み込みのUserモデルを、パブリック向きのプロファイルのグループ(これらのプロファイルはUserオブジェクトに戻っている)を識別する1人当たりモデルとして使用するか、それをプロファイル自体として使用するか、一人一人のために単一のAccountオブジェクトに戻ってリンクしていますか?

+0

興味深い質問です。これらの異なるプロファイルが提供するものについてもう少し詳しい情報を提供できますか?例えばeコマースサイトを構築する場合、ユーザーは個人アカウントと企業アカウントを持つことができます。これは、割引ポリシー、注文数量などに影響します。この情報は、より情報に基づいた提案をするのに役立ちます。 – rantanplan

+0

うわー、これはとても遅いです!これはソーシャルサイトのためのものであり、ロールプレイ要素である。すべてのアカウントは「等しい」という点で、別々の「タイプ」はありません.Corperateアカウントや個人アカウント、単純に「メンバー」はありません。また、内蔵のDjango認証バックエンドが私のニーズを満たさないため、カスタム認証バックエンドが書かれています。希望が助けてくれる! –

答えて

0

はい、1人あたり1人の唯一のユーザーと、複数のPublicProfileオブジェクトを「切り替え」できるようにするのが最適なアプローチだと思います。これは、それらのために1つのユーザ名/パスワードだけの利益をもたらし、Djangoの認証が一般的にどのように動作するかに最もよく似ているようです。

関連する問題