0

私はDjangoの新機能です。アプリケーションのさまざまなタイプの認証に複数のモデルを使用することができますか?たとえば、顧客使用顧客モデル、サプライヤ使用サプライヤモデル、管理用のデフォルトのユーザー登録モデルも保持しますか?もしそうなら、正しい方向に私を向けることができます、どのようにそれを行うことができますか?どのパッケージを使うべきですか? 私は、認証に必要な外部キーを各モデルに追加することで、パフォーマンスの問題を引き起こす可能性のあるすべてのクエリに外部キーを追加するという方法があります。より良い方法があるかどうかを知る必要があります。また、これらのカスタムモデルは、管理パネルで利用可能なすべての権限に役立ちます。 専門家の意見は本当に感謝します。Django - 認証に複数のモデルを使用する

+0

これはかなり意見に基づいています。個人的には、基本ユーザー認証モデルに戻るOneToOne関係を持つプロファイルモデルを作成することを好みます。これはこれを行う唯一の方法ではありませんが、IMOは最も単純で最もモジュラーです。 – souldeux

+0

@souldeuxデータの広範なアプリケーションでは、ジョインが関係するため、パフォーマンス上の問題が発生する可能性があります。 –

答えて

0

これを処理するオプションはいくつかあります。 最初に確認してくださいthe Django-docu

Djangoのデフォルトの認証は、ユーザー名とパスワードで動作します: 私はメールアドレスを使用してユーザーを認証するためにそれをカスタマイズしたいyou'ldましたが、ここでは元の文書にknbkrahul-guptaによって書かれた例です。フィールド。電子メール認証バックエンドは、電子メールとパスワードに基づいてユーザーを認証します。

from django.contrib.auth import get_user_model 

class EmailBackend(object): 
    """ 
    Custom Email Backend to perform authentication via email 
    """ 
    def authenticate(self, username=None, password=None): 
     user_model = get_user_model() 
     try: 
      user = user_model.objects.get(email=username) 
      if user.check_password(password): # check valid password 
       return user # return user to be authenticated 
     except user_model.DoesNotExist: # no matching user exists 
      return None 

    def get_user(self, user_id): 
     user_model = get_user_model() 
     try: 
      return user_model.objects.get(pk=user_id) 
     except user_model.DoesNotExist: 
      return None 

この認証バックエンドをAUTHENTICATION_BACKENDS設定に追加します。

# settings.py 
AUTHENTICATION_BACKENDS = (
    'my_app.backends.EmailBackend', 
    ... 
) 
+0

複数のモデルを使用してユーザーを認証したいと考えています。それは可能ですか? –

+0

@タヒールには2通りの方法があります。既存の認証システムを拡張するか、新しい認証システムを作成します。 あなたが実際にやろうとしていることを説明することは可能でしょうか? –

+0

私のアプリケーションは3つの異なるポータルを持ちます.1つは管理用、1つは顧客用、もう1つはサプライヤ用です。私は各ポータルに別々の認証システムを使いたいと思う。私は、デフォルトの管理者cPanelの権限システムから利益を得ることができるようにしたいと考えています。これは可能ですか? –

関連する問題