Maison  >  Article  >  développement back-end  >  Comment authentifier les utilisateurs de Django via des adresses e-mail ?

Comment authentifier les utilisateurs de Django via des adresses e-mail ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-19 20:08:30974parcourir

How to Authenticate Django Users via Email Addresses?

Authentification Django avec e-mail

Dans Django, l'authentification est généralement effectuée à l'aide de noms d'utilisateur. Cependant, il est parfois préférable d'authentifier les utilisateurs via leur adresse e-mail. Cela soulève un défi, car Django utilise des noms d'utilisateur dans sa structure d'URL.

Backend d'authentification personnalisé

Pour surmonter cette limitation, vous pouvez écrire un backend d'authentification personnalisé. Ce backend vous permet de spécifier votre propre logique d'authentification :

<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>

Ce backend authentifie les utilisateurs en fonction de leurs adresses e-mail et de leurs mots de passe.

Configuration du backend d'authentification

Une fois que vous avez votre backend personnalisé, définissez-le comme backend d'authentification dans vos paramètres Django :

<code class="python">AUTHENTICATION_BACKENDS = ['path.to.auth.module.EmailBackend']</code>

Connexion par e-mail

Avec le backend personnalisé en place, vous pouvez authentifier les utilisateurs à l'aide de leurs adresses e-mail :

<code class="python">email = request.POST['email']
password = request.POST['password']
user = authenticate(request, username=email, password=password)</code>

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