Authentification des utilisateurs dans Django

Django comes with a user authentication system. It handles user accounts, groups, permissions and cookie-based user sessions. This section of the documentation explains how the default implementation works out of the box, as well as how to extend and customize it to suit your project’s needs.

Aperçu

Le système d’authentification de Django gère aussi bien l’authentification que l’autorisation. En bref, l’authentification vérifie que l’utilisateur est bien celui qu’il prétend être et l’autorisation détermine ce qu’un utilisateur authentifié est autorisé à faire. Ici, nous utiliserons le terme authentification pour nous référer à ces deux tâches.

Le système d’authentification consiste en :

  • Utilisateurs

  • Permissions : drapeaux binaires (oui/non) indiquant si un utilisateur a le droit d’effectuer certaines tâches

  • Groupes : une manière générique d’appliquer des étiquettes et des permissions à plus d’un utilisateur

  • Un système de hachage de mots de passe configurable

  • Outils de formulaires et de vues pour connecter les utilisateurs ou limiter l’accès au contenu

  • Un système de moteur d’authentification enfichable

Le système d’authentification de Django est conçu de manière très générique et ne fournit pas certaines fonctionnalités couramment présentes dans les systèmes d’authentification sur le Web. Des solutions pour certains de ces problèmes courants ont été implémentées dans des paquets externes :

  • Contrôle de la force des mots de passe

  • Limitation des tentatives de connexion

  • Authentification à des services externes (OAuth, par exemple)

Installation

La prise en charge de l’authentification est intégrée dans Django sous forme de module contribué dans django.contrib.auth. Par défaut, la configuration requise est déjà incluse dans le fichier settings.py généré par la commande django-admin.py startproject. Cette configuration consiste en deux éléments figurant dans le réglage INSTALLED_APPS:

  1. 'django.contrib.auth' contient le cœur du système d’authentification et ses modèles par défaut.

  2. 'django.contrib.contenttypes' est le système de types de contenu de Django qui permet d’associer des permissions aux modèles que vous créez.

et deux lignes dans le réglage MIDDLEWARE_CLASSES:

  1. SessionMiddleware gère les sessions tout au long des requêtes.

  2. AuthenticationMiddleware associe les utilisateurs aux requêtes en utilisant les sessions.

Avec ces réglages configurés, le lancement de la commande manage.py syncdb crée les tables de base de données nécessaires pour les modèles liés à l’authentification, crée les permissions de tous les modèles définis dans les applications installées et vous demande de créer un compte superutilisateur la première fois que vous lancez cette commande.