私はDjango 4つのタイプのユーザーを持つサイトを作成しています。
カスタムインターフェイスを作成し、組み込みの管理インターフェイスを利用しないことを計画していることに注意してください。このユーザー構造を実装するための最良の方法は何でしょうか?私はDjangoの組み込み認証システム(パスワードのソルティングとハッシュを管理し、さらにセッション管理など)を使用したいと思いますが、安全で本番環境に対応できる他の認証システムを使用することもできます。
編集:また、私の計画では、1つのログイン画面を使用してサイトにアクセスし、権限とユーザータイプを使用して、各ユーザーのダッシュボードで利用できるものを決定します。
編集:ユーザータイプごとにアプリを使用することでこれを実現することは可能ですか?可能な場合、これは単一のログイン画面でどのように行われますか?.
まず、プロジェクトに複数の認証ユーザーベースを作成することはできません。したがって、Django提供されているユーザー認証を使用し、複数のタイプのユーザーに対してそれをフォークする必要があります。Djangoユーザーには、登録時に提供する必要があるいくつかのデフォルト値があります(Django Adminでユーザーを作成してみてください。)できることは、「CustomUser」というモデルを作成し、AbstractUser
から継承することです。これにより、「CustomUser」モデルがプロジェクトユーザーのデフォルトです。AbstractUser
から継承するため、この「CustomUser」モデルには元のユーザーモデルのすべてのフィールドが含まれ、独自にいくつかのフィールドを追加できます。また、settings.py
元のユーザーモデルがデフォルトの認証モデルではなくなったプロジェクトのファイル。認証に使用される新しい 'CustomUser'モデルです。次のコードが役立つかどうかを確認してください。
from Django.db import models
from Django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
type_choices = (
('SU', 'Super User'),
('A', 'User Type A'),
('B', 'User Type B'),
('C', 'User Type C'),
)
user_type = models.CharField(max_length=2,
choices=type_choices,
default='C')
class UserDetails(model.Model):
type = models.OneToOneField('CustomUser')
extra_info = models.CharField(max_length=200)
上記のコードで、ユーザーがユーザー名、パスワードなどの基本情報を提供できるCustomUserモデルを作成しました。これはDjangoのデフォルトです。次に、ユーザータイプを選択し、新しい認証モデルとOneToOneリレーションを持つUserDetailsモデルに追加情報を保存します。あなたがしなければならない最後の一つは、settings.py
ファイル。
AUTH_USER_MODEL = 'index.CustomUser'
このindex
は、私のCustomUser
モデルが作成されたアプリです。
お役に立てれば。
Groups Djangoメカニズムを使用する必要があります-userAのような4つのグループを作成し、共通と言って、ユーザーが最初のグループか2番目のグループかを確認する必要があります-次に適切なビューを表示します