In Django verwendet der Standardauthentifizierungsmechanismus Benutzernamen als Anmeldeinformationen. In bestimmten Szenarien kann es jedoch erforderlich sein, Benutzer stattdessen über ihre E-Mail-Adressen zu authentifizieren. Um dies zu erreichen, wird die Erstellung eines benutzerdefinierten Authentifizierungs-Backends empfohlen.
Der folgende Python-Code veranschaulicht ein benutzerdefiniertes Authentifizierungs-Backend, das Benutzer anhand ihrer E-Mail-Adressen authentifiziert:
<code class="python">from django.contrib.auth import get_user_model from django.contrib.auth.backends import ModelBackend class EmailBackend(ModelBackend): def authenticate(self, request, username=None, password=None, **kwargs): UserModel = get_user_model() try: user = UserModel.objects.get(email=username) except UserModel.DoesNotExist: return None else: if user.check_password(password): return user return None</code>
Um das benutzerdefinierte Authentifizierungs-Backend zu verwenden, fügen Sie Folgendes zu den Einstellungen Ihres Django-Projekts hinzu:
<code class="python">AUTHENTICATION_BACKENDS = ['path.to.auth.module.EmailBackend']</code>
Mit dem benutzerdefinierten Authentifizierungs-Backend An Ort und Stelle können Sie Benutzer per E-Mail mit den folgenden Schritten authentifizieren:
<code class="python"># Get email and password from the request email = request.POST['email'] password = request.POST['password'] # Authenticate the user user = authenticate(username=email, password=password) # Log in the user if authentication was successful if user is not None: login(request, user)</code>
Dieser Ansatz ermöglicht die Benutzerauthentifizierung über ihre E-Mail-Adressen, ohne dass Benutzernamen erforderlich sind.
Das obige ist der detaillierte Inhalt vonWie authentifiziert man Benutzer per E-Mail in Django?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!