django.contrib.authLien vers cette rubrique
Ce document présente le matériel de référence d’API des composants du système d’authentification de Django. Pour plus de détails sur l’utilisation de ces composants et sur la manière de personnaliser l’authentification et l’autorisation, consultez le guide thématique sur l’authentification.
Le modèle UserLien vers cette rubrique
- class models.UserLien vers cette définition
ChampsLien vers cette rubrique
- class models.User
Les objets
Userpossèdent les champs suivants :- usernameLien vers cette définition
Obligatoire. Au maximum 150 caractères. Les noms d’utilisateur peuvent contenir des caractères alphanumériques (
_,@,+,.et-).La longueur
max_lengthdevrait suffire dans beaucoup de situations. Si vous avez besoin d’une plus grande longueur, utilisez plutôt un modèle d’utilisateur personnalisé. Si vous utilisez MySQL avec le codageutf8mb4(recommandé pour une prise en charge intégrale d’Unicode), indiquez au maximummax_length=191parce que MySQL ne peut créer d’index unique que jusqu’à une longueur de 191 caractères dans ce cas.
- first_nameLien vers cette définition
Facultatif (
blank=True). 30 caractères ou moins.
- last_nameLien vers cette définition
Facultatif (
blank=True). 150 caractères ou moins.
- emailLien vers cette définition
Facultatif (
blank=True). Adresse électronique.
- passwordLien vers cette définition
Obligatoire. Une empreinte avec métadonnées du mot de passe (Django ne stocke pas le mot de passe en clair). La longueur des mots de passe réels n’est pas limitée, ni les caractères qu’ils contiennent. Voir la documentation sur les mots de passe.
- groupsLien vers cette définition
Une relation plusieurs-à-plusieurs vers
Group.
- user_permissionsLien vers cette définition
Une relation plusieurs-à-plusieurs vers
Permission.
- is_staffLien vers cette définition
Valeur booléenne. Indique si cet utilisateur peut accéder au site d’administration.
- is_activeLien vers cette définition
Valeur booléenne. Indique si cet utilisateur doit être considéré comme actif. Nous recommandons de définir ce drapeau à
Falseau lieu de supprimer le compte ; ainsi, si vos applications comportent des clés étrangères vers des utilisateurs, les clés étrangères ne seront pas cassées.Ceci ne détermine pas forcément si l’utilisateur peut se connecter ou non. Les moteurs d’authentification ne sont pas obligés de vérifier le drapeau
is_active, mais le moteur par défaut (ModelBackend) et le moteurRemoteUserBackendle font. Vous pouvez utiliserAllowAllUsersModelBackendouAllowAllUsersRemoteUserBackendsi vous voulez autoriser les utilisateurs inactifs à se connecter. Dans ce cas, vous devrez aussi adapter le formulaireAuthenticationFormutilisé par la vueLoginViewcar il rejette les utilisateurs inactifs. Soyez conscient que les méthodes de contrôle des permissions telles quehas_perm()ainsi que l’authentification dans le site d’administration de Django renvoient toutesFalsepour les utilisateurs inactifs.
- is_superuserLien vers cette définition
Valeur booléenne. Indique que cet utilisateur possède toutes les permissions sans avoir besoin de les lui attribuer explicitement.
- last_loginLien vers cette définition
Horodatage de la dernière connexion de l’utilisateur.
- date_joinedLien vers cette définition
Horodatage indiquant la date de création du compte. Défini par défaut à la date/heure du moment où le compte a été créé.
AttributsLien vers cette rubrique
- class models.User
- is_authenticatedLien vers cette définition
Attribut en lecture seule qui vaut toujours
True(contrairement àAnonymousUser.is_authenticatedqui vaut toujoursFalse). C’est une façon de savoir si l’utilisateur a été authentifié. Aucune permission n’est prise en compte et il n’y a pas de contrôle sur le drapeauis_activede l’utilisateur ou sur la validité de la session. Même si cet attribut est généralement consulté pourrequest.userafin de déterminer s’il a été défini parAuthenticationMiddleware(représentant l’utilisateur actuellement connecté), vous devez savoir que cet attribut vautTruepour toute instance deUser.
- is_anonymousLien vers cette définition
Attribut en lecture seule qui vaut toujours
False. C’est une façon de différencier les objetsUserdes objetsAnonymousUser. Généralement, il vaut mieux utiliseris_authenticatedque cet attribut.
MéthodesLien vers cette rubrique
- class models.User
- get_username()Lien vers cette définition
Renvoie le nom d’utilisateur de cet utilisateur. Comme le modèle
Userpeut être substitué, il est préférable d’utiliser cette méthode plutôt que de référencer directement l’attributusername.
- get_full_name()Lien vers cette définition
Renvoie
first_nameetlast_nameséparés par une espace.
- get_short_name()Lien vers cette définition
Renvoie le prénom (
first_name).
- set_password(raw_password)Lien vers cette définition
Définit le mot de passe de l’utilisateur à la chaîne brute indiquée, en se chargeant du hachage du mot de passe. L’objet
Usern’est pas enregistré par cette méthode.Lorsque
raw_passwordvautNone, le mot de passe sera défini comme non utilisable, comme si on avait appeléset_unusable_password().
- check_password(raw_password)Lien vers cette définition
Renvoie
Truesi la chaîne brute transmise est le mot de passe correct de cet utilisateur (cette méthode se charge du hachage du mot de passe en vue de la comparaison).
- set_unusable_password()Lien vers cette définition
Marque l’utilisateur comme n’ayant pas de mot de passe défini. Ce n’est pas la même chose que de définir une chaîne vide comme mot de passe.
check_password()ne renvoie jamaisTruepour cet utilisateur. L’objetUsern’est pas enregistré par cette méthode.Cela peut être utile si le processus d’authentification de votre application se fait par une source externe existante telle qu’un annuaire LDAP.
- has_usable_password()Lien vers cette définition
Renvoie
Falsesiset_unusable_password()a été appelée pour cet utilisateur.
- get_user_permissions(obj=None)Lien vers cette définition
-
Renvoie l’ensemble des permissions (chaînes) que l’utilisateur obtient directement.
Si
objest transmis, ne renvoie que les permissions d’utilisateur liées à cet objet spécifique.
- get_group_permissions(obj=None)Lien vers cette définition
Renvoie l’ensemble des permissions (chaînes) que l’utilisateur obtient au travers des groupes auxquels il appartient.
Si
objest transmis, ne renvoie que les permissions de groupe liées à cet objet spécifique.
- get_all_permissions(obj=None)Lien vers cette définition
Renvoie l’ensemble des permissions (chaînes) que l’utilisateur obtient directement ou au travers des groupes auxquels il appartient.
Si
objest transmis, ne renvoie que les permissions liées à cet objet spécifique.
- has_perm(perm, obj=None)Lien vers cette définition
Renvoie
Truesi l’utilisateur possède la permission indiquée, oùpermest au format"<étiquette application>.<code permission>"(voir la documentation sur les permissions). Si l’utilisateur est inactif, cette méthode renvoie toujoursFalse. Pour un superutilisateur actif, cette méthode renvoie toujoursTrue.Si
objest transmis, cette méthode ne contrôle pas la permission au niveau du modèle, mais pour l’objet indiqué.
- has_perms(perm_list, obj=None)Lien vers cette définition
Renvoie
Truesi l’utilisateur possède toutes les permissions indiquées, où chaque permission est au format"<étiquette application>.<code permission>". Si l’utilisateur est inactif, cette méthode renvoie toujoursFalse. Pour un superutilisateur actif, cette méthode renvoie toujoursTrue.Si
objest transmis, cette méthode ne contrôle pas les permissions au niveau du modèle, mais pour l’objet indiqué.
- has_module_perms(package_name)Lien vers cette définition
Renvoie
Truesi l’utilisateur possède au moins une permission dans le module indiqué (l’étiquette d’application Django). Si l’utilisateur est inactif, cette méthode renvoie toujoursFalse. Pour un superutilisateur actif, cette méthode renvoie toujoursTrue.
- email_user(subject, message, from_email=None, **kwargs)Lien vers cette définition
Envoie un courriel à l’utilisateur. Si
from_emailvautNone, Django utiliseDEFAULT_FROM_EMAIL. Tout paramètre**kwargssera transmis à l’appel sous-jacentsend_mail().
Méthodes du gestionnaireLien vers cette rubrique
- class models.UserManagerLien vers cette définition
Le modèle
Userpossède un gestionnaire personnalisé comportant les méthodes utilitaires suivantes (en plus de celles fournies parBaseUserManager) :- create_user(username, email=None, password=None, **extra_fields)Lien vers cette définition
Crée, enregistre et renvoie un objet
User.Les attributs
usernameetpasswordsont définis en fonction des paramètres transmis. La partie domaine deemailest automatiquement convertie en minuscules et l’attributis_activede l’objetUserrenvoyé sera défini àTrue.Si aucun mot de passe n’est indiqué,
set_unusable_password()est appelée.Les paramètres nommés
extra_fieldssont directement transmis à la méthode__init__de la classeUser, de manière à permettre la définition de champs supplémentaires sans restriction dans un modèle d’utilisateur personnalisé.Voir Création d’utilisateurs pour un exemple d’utilisation.
- create_superuser(username, email=None, password=None, **extra_fields)Lien vers cette définition
Identique à
create_user(), mais définitis_staffetis_superuseràTrue.
- with_perm(perm, is_active=True, include_superusers=True, backend=None, obj=None)Lien vers cette définition
-
Renvoie les utilisateurs ayant la permission
permdonnée soit dans le format"<nom_app>.<code_de_permission>", soit comme instance dePermission. Un jeu de requête vide est renvoyé si aucun utilisateur ne possède la permissionperm.Si
is_activevautTrue(par défaut), ne renvoie que des utilisateurs actifs. Avec la valeurFalse, ne renvoie que des utilisateurs inactifs. IndiquezNonepour ne pas tenir compte de l’état actif des utilisateurs dans la recherche.Si
include_superusersvautTrue(par défaut), le résultat contiendra aussi les superutilisateurs.Si
backendest transmis et qu’il est défini dansAUTHENTICATION_BACKENDS, alors cette méthode va l’utiliser. Sinon, elle utilisera la valeurbackenddansAUTHENTICATION_BACKENDS, s’il y en a qu’une, ou générer une exception.
L’objet AnonymousUserLien vers cette rubrique
- class models.AnonymousUserLien vers cette définition
django.contrib.auth.models.AnonymousUserest une classe qui implémente l’interfacedjango.contrib.auth.models.User, avec les différences suivantes :id est toujours
None.usernamecontient toujours la chaîne vide.get_username()renvoie toujours la chaîne vide.is_anonymousvautTrueau lieu deFalse.is_authenticatedvautFalseau lieu deTrue.is_staffetis_superusersont toujoursFalse.is_activeest toujoursFalse.groupsetuser_permissionssont toujours vides.set_password(),check_password(),save()etdelete()génèrent l’exceptionNotImplementedError.
En pratique, vous n’aurez probablement jamais besoin d’utiliser directement des objets AnonymousUser vous-même, mais ils sont utilisés dans les requêtes Web, comme expliqué dans la section suivante.
Le modèle PermissionLien vers cette rubrique
- class models.PermissionLien vers cette définition
ChampsLien vers cette rubrique
Les objets Permission possèdent les champs suivants :
- class models.Permission
- nameLien vers cette définition
Obligatoire. 255 caractères au maximum. Exemple :
'Can vote'.
- content_typeLien vers cette définition
Obligatoire. Une référence à la table de base de données
django_content_type, qui contient un enregistrement pour chaque modèle installé.
- codenameLien vers cette définition
Obligatoire. 100 caractères au maximum. Exemple :
'can_vote'.
MéthodesLien vers cette rubrique
Les objets Permission possèdent les mêmes méthodes d’accès aux données que tout autre modèle Django.
Le modèle GroupLien vers cette rubrique
- class models.GroupLien vers cette définition
ChampsLien vers cette rubrique
Les objets Group possèdent les champs suivants :
- class models.Group
- nameLien vers cette définition
Obligatoire. 150 caractères au maximum. Tous les caractères sont autorisés. Exemple :
'Utilisateurs fantastiques'.
- permissionsLien vers cette définition
Une relation plusieurs-à-plusieurs vers
Permission.group.permissions.set([permission_list]) group.permissions.add(permission, permission, ...) group.permissions.remove(permission, permission, ...) group.permissions.clear()
ValidateursLien vers cette rubrique
- class validators.ASCIIUsernameValidatorLien vers cette définition
Un validateur de champ n’autorisant que les caractères ASCII en plus de
@,.,+,-et_.
- class validators.UnicodeUsernameValidatorLien vers cette définition
Un validateur de champ autorisant les caractères Unicode en plus de
@,.,+,-et_. Il s’agit du validateur par défaut pourUser.username.
Signaux de connexion et de déconnexionLien vers cette rubrique
L’infrastructure d’authentification définit les signaux suivants qui peuvent être utilisés comme notification lorsqu’un utilisateur se connecte ou se déconnecte.
- user_logged_in()Lien vers cette définition
Envoyé lorsqu’un utilisateur se connecte avec succès.
Paramètres envoyés avec ce signal :
senderLa classe de l’utilisateur qui vient de se connecter.
requestL’instance
HttpRequestactuelle.userL’instance utilisateur qui vient de se connecter.
- user_logged_out()Lien vers cette définition
Envoyé lorsque la méthode
logoutest appelée.senderComme ci-dessus : la classe de l’utilisateur qui vient de se déconnecter ou
Nonesi l’utilisateur n’était pas authentifié.requestL’instance
HttpRequestactuelle.userL’instance de l’utilisateur qui vient de se déconnecter ou
Nonesi l’utilisateur n’était pas authentifié.
- user_login_failed()Lien vers cette définition
Envoyé lorsque le processus de connexion d’un utilisateur a échoué.
senderLe nom du module utilisé pour l’authentification.
credentialsUn dictionnaire de paramètres nommés contenant les données d’authentification qui ont été transmises à
authenticate()ou à votre propre moteur d’authentification. Les données d’authentification correspondant à certains motifs « sensibles » (par ex. « password ») ne sont pas transmis en clair dans les paramètres du signal.requestL’objet
HttpRequestpour autant qu’il ait été fourni àauthenticate().
Moteurs d’authentificationLien vers cette rubrique
Cette section présente les moteurs d’authentification livrés avec Django. Pour de plus amples informations sur la manière de les utiliser et sur l’écriture de vos propres moteurs d’authentification, consultez la section Autres sources d’authentification du Guide d’authentification des utilisateurs.
Moteurs d’authentification disponiblesLien vers cette rubrique
Les moteurs suivants sont disponibles dans django.contrib.auth.backends:
- class BaseBackendLien vers cette définition
-
Une classe de base fournissant des implémentations par défaut pour toutes les méthodes obligatoires. Par défaut, elle rejette tout utilisateur et ne fournit aucune permission.
- get_user_permissions(user_obj, obj=None)Lien vers cette définition
Renvoie un ensemble vide.
- get_group_permissions(user_obj, obj=None)Lien vers cette définition
Renvoie un ensemble vide.
- get_all_permissions(user_obj, obj=None)Lien vers cette définition
Utilise
get_user_permissions()etget_group_permissions()pour obtenir l’ensemble des chaînes de permission dont disposeuser_obj.
- has_perm(user_obj, perm, obj=None)Lien vers cette définition
Utilise
get_all_permissions()pour vérifier siuser_objpossède la chaîne de permissionperm.
- class ModelBackendLien vers cette définition
Il s’agit du moteur d’authentification utilisé par défaut par Django. Il effectue l’authentification sur la base de l’identifiant d’un utilisateur et de son mot de passe. Pour le modèle d’utilisateur par défaut de Django, l’identifiant de l’utilisateur est le nom d’utilisateur (
username), pour les modèles d’utilisateur personnalisés, c’est le champ contenu dansUSERNAME_FIELD(voir Personnalisation des utilisateurs et de l’authentification).Il gère également le modèle de permissions par défaut tel que défini pour
UseretPermissionsMixin.has_perm(),get_all_permissions(),get_user_permissions()etget_group_permissions()acceptent en paramètre un objet pour des permissions spécifiques à cet objet, mais ce moteur n’implémente pas cette possibilité à part le renvoi d’un ensemble vide de permissions siwith_perm()peut aussi recevoir un objet en paramètre, mais au contraire des autres méthodes, elle renvoie un jeu de requête vide siobj is not None.- authenticate(request, username=None, password=None, **kwargs)Lien vers cette définition
Essaie d’authentifier
usernameavecpassworden appelantUser.check_password. Si aucunusernamen’est fourni, elle essaie d’obtenir un nom d’utilisateur à partir dekwargsavec la cléCustomUser.USERNAME_FIELD. Renvoie soit un utilisateur authentifié, soitNone.requestest un objetHttpRequestet peut valoirNones’il n’a pas été fourni àauthenticate()(laquelle le transmet au moteur d’authentification).
- get_user_permissions(user_obj, obj=None)Lien vers cette définition
Renvoie l’ensemble des chaînes de permissions dont
user_objbénéficie à partir de ses propres permissions d’utilisateur. Renvoie un ensemble vide siis_anonymousou siis_activevautFalse.
- get_group_permissions(user_obj, obj=None)Lien vers cette définition
Renvoie l’ensemble des chaînes de permissions dont
user_objbénéficie à partir des permissions des groupes auxquels il appartient. Renvoie un ensemble vide siis_anonymousou siis_activevautFalse.
- get_all_permissions(user_obj, obj=None)Lien vers cette définition
Renvoie l’ensemble des chaînes de permissions dont
user_objbénéficie, que ce soit en son nom propre ou au travers des groupes auxquels il appartient. Renvoie un ensemble vide siis_anonymousou siis_activevautFalse.
- has_perm(user_obj, perm, obj=None)Lien vers cette définition
Utilise
get_all_permissions()pour vérifier siuser_objpossède la chaîne de permissionperm. RenvoieFalsesi l’utilisateur n’est pasis_active.
- has_module_perms(user_obj, app_label)Lien vers cette définition
Indique si
user_objpossède au moins une permission pour l’applicationapp_label.
- user_can_authenticate()Lien vers cette définition
Indique si l’utilisateur est autorisé à s’authentifier. Pour correspondre au comportement de
AuthenticationFormquiinterdit aux utilisateurs inactifs de se connecter, cette méthode renvoieFalsepour les utilisateurs ayantis_active=False. Les modèles d’utilisateurs personnalisés n’ayant pas de champis_activesont autorisés.
- with_perm(perm, is_active=True, include_superusers=True, obj=None)Lien vers cette définition
-
Renvoie tous les utilisateurs actifs ayant la permission
permsoit sous la forme"<nom_app>.<code_de_permission>", soit comme instance dePermission. Un jeu de requête vide est renvoyé si aucun utilisateur ne possède la permissionperm.Si
is_activevautTrue(par défaut), ne renvoie que des utilisateurs actifs. Avec la valeurFalse, ne renvoie que des utilisateurs inactifs. IndiquezNonepour ne pas tenir compte de l’état actif des utilisateurs dans la recherche.Si
include_superusersvautTrue(par défaut), le résultat contiendra aussi les superutilisateurs.
- class AllowAllUsersModelBackendLien vers cette définition
Identique à
ModelBackendsauf qu’il ne rejette pas les utilisateurs inactifs parce queuser_can_authenticate()renvoie toujoursTrue.Lorsque ce moteur est utilisé, il vaut probablement mieux adapter le formulaire
AuthenticationFormutilisé par la vueLoginViewen surchargeant la méthodeconfirm_login_allowed()car celle-ci rejette les utilisateurs inactifs.
- class RemoteUserBackendLien vers cette définition
Utilisez ce moteur pour profiter de processus d’authentification externes à Django. Le processus d’authentification utilise les noms d’utilisateur se trouvant dans
request.META['REMOTE_USER']. Consultez la documentation sur l”authentification par REMOTE_USER.Pour plus de flexibilité, vous pouvez créer votre propre moteur d’authentification héritant de cette classe et surcharger ces attributs ou méthodes :
- create_unknown_userLien vers cette définition
TrueouFalse. Détermine si un objet utilisateur est créé ou pas s’il n’est pas trouvé dans la base de données. La valeur par défaut estTrue.
- authenticate(request, remote_user)Lien vers cette définition
Le nom d’utilisateur transmis à
remote_userest considéré comme sûr. Cette méthode renvoie l’objet utilisateur ayant le nom d’utilisateur indiqué, créant un nouvel utilisateur sicreate_unknown_uservautTrue.Renvoie
Nonesicreate_unknown_uservautFalseet un objetUserayant le nom d’utilisateur indiqué si ce dernier n’existe pas encore dans la base de données.requestest un objetHttpRequestet peut valoirNones’il n’a pas été fourni àauthenticate()(laquelle le transmet au moteur d’authentification).
- clean_username(username)Lien vers cette définition
Procède au nettoyage de
username(par ex. raccourcissement de l’information DN de LDAP) avant de l’utiliser pour obtenir ou créer un objet utilisateur. Renvoie le nom d’utilisateur nettoyé.
- configure_user(request, user)Lien vers cette définition
Configure un nouvel utilisateur. Cette méthode est appelée immédiatement après la création d’un nouvel utilisateur et peut être utilisée pour effectuer des actions de configuration personnalisées, comme l’attribution de groupes d’utilisateurs en fonction d’attributs d’un répertoire LDAP. Renvoie l’objet utilisateur.
requestest un objetHttpRequestet peut valoirNones’il n’a pas été fourni àauthenticate()(laquelle le transmet au moteur d’authentification).
- user_can_authenticate()Lien vers cette définition
Indique si l’utilisateur est autorisé à s’authentifier. Cette méthode renvoie
Falsepour les utilisateurs ayantis_active=False. Les modèles d’utilisateurs personnalisés n’ayant pas de champis_activesont autorisés.
- class AllowAllUsersRemoteUserBackendLien vers cette définition
Identique à
RemoteUserBackendsauf qu’il ne rejette pas les utilisateurs inactifs parce queuser_can_authenticaterenvoie toujoursTrue.
Fonctions utilitairesLien vers cette rubrique
- get_user(request)Lien vers cette définition
Renvoie l’instance de modèle utilisateur associée à la session de la requête
requestdonnée.Elle contrôle si le moteur d’authentification stocké dans la session est présent dans
AUTHENTICATION_BACKENDS. Si oui, elle utilise la méthodeget_user()du moteur pour récupérer l’instance de modèle utilisateur puis vérifie la session en appelant la méthodeget_session_auth_hash()du modèle utilisateur.Renvoie une instance de
AnonymousUsersi le moteur d’authentification stocké dans la session n’est plus dansAUTHENTICATION_BACKENDS, si un utilisateur n’est pas renvoyé par la méthodeget_user()du moteur ou si l’empreinte d’authentification de la session n’est pas valide.