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
Libérer: 2024-10-19 20:18:29
original
1063 Les gens l'ont consulté

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

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

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

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!

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