Dans Django, le mécanisme d'authentification par défaut utilise les noms d'utilisateur pour les informations de connexion. Cependant, certains scénarios peuvent nécessiter d’authentifier les utilisateurs via leurs adresses e-mail. Pour y parvenir, la création d'un backend d'authentification personnalisé est l'approche recommandée.
Le code Python suivant illustre un backend d'authentification personnalisé qui authentifie les utilisateurs en fonction de leurs adresses e-mail :
<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>
Pour utiliser le backend d'authentification personnalisé, ajoutez ce qui suit aux paramètres de votre projet Django :
<code class="python">AUTHENTICATION_BACKENDS = ['path.to.auth.module.EmailBackend']</code>
Avec le backend d'authentification personnalisé en place, vous pouvez authentifier les utilisateurs par e-mail en suivant les étapes suivantes :
<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>
Cette approche permet l'authentification des utilisateurs via leurs adresses e-mail sans avoir besoin de noms d'utilisateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!