Maison >développement back-end >Tutoriel Python >Comment authentifier les utilisateurs par courrier électronique dans Django ?

Comment authentifier les utilisateurs par courrier électronique dans Django ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-19 20:18:291067parcourir

How to Authenticate Users with Email in Django?

Authentification Django avec e-mail

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.

Backend d'authentification personnalisé

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>

Configuration

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>

Utilisation

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn