Ich arbeite an einem Projekt, wo ich 3 Arten von Benutzern haben muss.Django Mehrere Auth Modelle
- Admin
- Anbieter
- Kunden
Ich möchte für alle drei von ihnen separate Modelle zu haben in einem gemeinsamen Benutzermodell Vendor & Kunden stattdessen ein Typfeld zu haben.
Mein erster Ansatz für dieses Problem war es, alle Modelle von Nebenklassen des AbstractUser Modell
# models.py
from django.contrib.auth.models import AbstractUser
class Customer(AbstractUser):
pass
class Vendor(AbstractUser):
pass
zu definieren und einen benutzerdefinierten Authentifizierungs-Backend fügen Sie die Authentifizierung von Benutzern auf dem Request-Objekt basieren zu handhaben.
# settings.py
AUTHENTICATION_BACKENDS = ['backends.CustomAuthBackend']
Und meine backends.py-Datei wird die Logik enthalten, um Benutzer zu authentifizieren und für jeden auf dem Request-Objekt anhand einer unterschiedlichen Modelle.
# backends.py
from __future__ import print_function
class CustomAuthBackend(object):
def authenticate(self, request, username=None, password=None):
# authenticate user based on request object
def get_user(self, user_id):
# logic to get user
Allerdings funktioniert das nicht und sieht aus wie ich auch die AUTH_USER_MODEL in settings.py specifiy müssen, die für die Authentifizierung verwendet wird.
Ist es überhaupt möglich.Do Django erlauben, aus 3 verschiedenen Tabellen zu authentifizieren. Wie kann ich damit fortfahren? Gibt es einen anderen Ansatz dafür und was sollte ich ändern?