2017-10-11 3 views
1

In meiner Django-Anwendung brauche ich mehrere Arten von Django Benutzer:
1. Ein typischer Benutzer admin, die durch E-Mail und authentifiziert mit Passwort identifiziert
2. Ein Remote-Anwendung, die eine Verbindung herstellt Django und authentifiziert sich mit Pre-Shared Key und Tokens. Die E-Mail-Adresse ist für diesen Benutzertyp nicht erforderlich.Django: ein Authentifizierungs-Backend pro Benutzermodell

Jeder Benutzertyp hat verschiedene zugeordnete Attribute. Ich weiß, dass ich das Benutzermodell in Django erweitern kann. Ich habe bereits ein E-Mail-Authentifizierungs-Backend erstellt. Dies funktioniert jedoch für alle Konten, einschließlich der Remote-Anwendungen.

Gibt es eine effektive Möglichkeit, ein Auth-Backend für einen Benutzertyp zu erstellen?

Antwort

0

Sie können eine eigene Authentifizierungs-Backend für die Remote-Anwendung erstellen und zeigen Sie sie in Ihre Einstellungen wie folgt aus:

AUTHENTICATION_BACKENDS = (
    'path.to.email.authentication', 
    'path.to.remote.app.authentication', 
) 

Auf diese Weise wird Django versuchen, die E-Mail-Authentifizierung zuerst zu verwenden, und wenn das fehlschlägt wird der Versuch Remote-App-Authentifizierung.

Sie können über benutzerdefinierte Authentifizierungs-Backends lesen here

Hoffe, es hilft!

0

Wenn Sie für einige Benutzer die Kennwortauthentifizierung deaktivieren möchten, können Sie set_unusable_password verwenden. Aus der Dokumentation:

Markiert den Benutzer als kein Kennwort festgelegt. Dies ist nicht dasselbe wie eine leere Zeichenfolge für ein Passwort. check_password() für diesen Benutzer gibt niemals True zurück. Speichert das Benutzerobjekt nicht.

Dies ist möglicherweise erforderlich, wenn die Authentifizierung für Ihre Anwendung für eine vorhandene externe Quelle, z. B. ein LDAP-Verzeichnis, erfolgt.

Verwandte Themen