Heim > Artikel > Backend-Entwicklung > Wie authentifiziert man Django-Benutzer über E-Mail-Adressen?
In Django erfolgt die Authentifizierung normalerweise mithilfe von Benutzernamen. Manchmal ist es jedoch wünschenswert, Benutzer stattdessen über ihre E-Mail-Adressen zu authentifizieren. Dies stellt eine Herausforderung dar, da Django Benutzernamen in seiner URL-Struktur verwendet.
Um diese Einschränkung zu überwinden, können Sie ein benutzerdefiniertes Authentifizierungs-Backend schreiben. Mit diesem Backend können Sie Ihre eigene Authentifizierungslogik festlegen:
<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>
Dieses Backend authentifiziert Benutzer anhand ihrer E-Mail-Adressen und Passwörter.
Sobald Sie dies getan haben Wenn Sie Ihr benutzerdefiniertes Backend eingerichtet haben, legen Sie es in Ihren Django-Einstellungen als Authentifizierungs-Backend fest:
<code class="python">AUTHENTICATION_BACKENDS = ['path.to.auth.module.EmailBackend']</code>
Wenn das benutzerdefinierte Backend vorhanden ist, können Sie Benutzer anhand ihrer E-Mail-Adressen authentifizieren:
<code class="python">email = request.POST['email'] password = request.POST['password'] user = authenticate(request, username=email, password=password)</code>
Das obige ist der detaillierte Inhalt vonWie authentifiziert man Django-Benutzer über E-Mail-Adressen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!