Files
training.django/documentation/09-auth.md
Steve Kossouho e3ebf6bf4f Add documentation and source
Added documentation, source and extra files.
2025-07-02 20:26:50 +02:00

3.2 KiB

title, author
title author
Django Steve Kossouho

L'authentification et les utilisateurs


L'application d'authentification de Django

Django fournit directement dans le framework une application de gestion de l'authentification, avec les modèles associés. Généralement, ces modèles sont utilisés dans tout projet Django, et reconnus par toutes les applications tierces Django qui utilisent l'authentification ou les utilisateurs.

Cette application est django.contrib.auth. Lorsqu'on l'utilise avec certains middleware ainsi que django.contrib.session, on a de bons outils pour se connecter en tant qu'une instance d'utilisateur de notre base.


S'authentifier programmatiquement

Django fournit plusieurs fonctions pour se dé/connecter en tant qu'une instance de User :

(Dans django.contrib.auth)

  • authenticate
  • login
  • logout

authenticate permet de savoir si des identifiants de connexion sont valides. Par exemple :

from django.contrib.auth import login, logout, authenticate
user = authenticate(username="…", password="…")  # ou email

S'ils le sont, la fonction renvoie l'utilisateur concerné, sinon la fonction renvoie None.


login modifie la session HTTP pour indiquer que nous sommes connecté en tant qu'un utilisateur. (nous avons donc besoin d'un objet request)

from django.contrib.auth import login, logout, authenticate
login(request, user)  # user est une instance du modèle User

logout déconnecte tout utilisateur connecté dans la session.


Grâce aux middleware et aux processeurs de contexte, depuis les vues ou dans les templates, on peut accéder facilement à l'instance de l'utilisateur actuellement connecté :

def view(request):
    print(request.user)
{{ user }} {# ou request.user puisque request est aussi dispo #}

S'authentifier avec un formulaire

Django propose plusieurs vues pour gérer l'authentification, qui rendent des templates trouvés dans un répertoire registration (qu'il faut généralement redéfinir pour adapter le rendu de la page et du formulaire).

On peut aussi s'authentifier manuellement en créant une simple vue utilisant un formulaire standard...


Ce formulaire utiliserait authenticate pour valider les champs et afficher une erreur si nécessaire. La vue réutiliserait authenticate une fois le formulaire valide pour récupérer un utilisateur et le connecter.


Considérations sur les mots de passe

Django enregistre normalement les utilisateurs en chiffrant le mot de passe. Cela se fait en interne en utilisant la clé secrète du paramètre SECRET_KEY.

Si l'on manipule une instance du modèle utilisateur pour modifier son mot de passe et qu'on y assigne une valeur en clair, elle sera enregistrée en clair dans la base de données.

Pour chiffrer correctement le mot de passe, il faut utiliser user.set_password() qui utilise le chiffrage.


Commandes pour l'authentification

  • changepassword <username> : changer un mot de passe
  • createsuperuser : créer un utilisateur qui a tous les droits (et accès à l'admin entre autres). Cet utilisateur possède .is_superuser == True