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

Mary-Kate Olsen
Libérer: 2024-10-19 20:08:30
original
1053 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal