{"title":"django.contrib.auth","version":"6.0","locale":"fr","docname":"ref/contrib/auth","url":"/fr/6.0/ref/contrib/auth/","canonical":"https://djangodocs.dev/fr/6.0/ref/contrib/auth/","summary":"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…","html":"<h1><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.auth</span></code><a class=\"heading-anchor\" href=\"#django-contrib-auth\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>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 <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/\"><span class=\"doc\">guide thématique sur l’authentification</span></a>.</p>\n<section id=\"user-model\">\n<h2>Le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">User</span></code><a class=\"heading-anchor\" href=\"#user-model\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">User</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<section id=\"fields\">\n<h3>Champs<a class=\"heading-anchor\" href=\"#fields\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">User</span></span></dt>\n<dd><p>Les objets <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">User</span></code></a> possèdent les champs suivants :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.username\">\n<span class=\"sig-name descname\"><span class=\"pre\">username</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.username\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Obligatoire. Au maximum 150 caractères. Les noms d’utilisateur peuvent contenir des caractères alphanumériques (<code class=\"docutils literal notranslate\"><span class=\"pre\">_</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">&#64;</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">+</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">.</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">-</span></code>).</p>\n<p>La longueur <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> devrait suffire pour la plupart des cas. Si vous avez besoin d’une plus grande longueur, utilisez un <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#specifying-custom-user-model\"><span class=\"std std-ref\">modèle utilisateur personnalisé</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.first_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">first_name</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.first_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Facultatif (<a class=\"reference internal\" href=\"/fr/6.0/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">blank=True</span></code></a>). 150 caractères ou moins.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.last_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">last_name</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.last_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Facultatif (<a class=\"reference internal\" href=\"/fr/6.0/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">blank=True</span></code></a>). 150 caractères ou moins.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.email\">\n<span class=\"sig-name descname\"><span class=\"pre\">email</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.email\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Facultatif (<a class=\"reference internal\" href=\"/fr/6.0/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">blank=True</span></code></a>). Adresse électronique.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.password\">\n<span class=\"sig-name descname\"><span class=\"pre\">password</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.password\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>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. Les métadonnées de ce champ peuvent aussi marquer le mot de passe comme inutilisable. Voir la <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/passwords/\"><span class=\"doc\">documentation sur les mots de passe</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.groups\">\n<span class=\"sig-name descname\"><span class=\"pre\">groups</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.groups\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une relation plusieurs-à-plusieurs vers <a class=\"reference internal\" href=\"#django.contrib.auth.models.Group\" title=\"django.contrib.auth.models.Group\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Group</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.user_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">user_permissions</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.user_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une relation plusieurs-à-plusieurs vers <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Permission</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_staff\">\n<span class=\"sig-name descname\"><span class=\"pre\">is_staff</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_staff\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Valeur booléenne. Permet à cet utilisateur d’accéder au site d’administration.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_active\">\n<span class=\"sig-name descname\"><span class=\"pre\">is_active</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_active\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Valeur booléenne. Marque ce compte utilisateur comme actif. Nous recommandons de définir ce drapeau à <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> au 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.</p>\n<p>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 <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code>, mais le moteur par défaut (<a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend\" title=\"django.contrib.auth.backends.ModelBackend\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelBackend</span></code></a>) et le moteur <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend\" title=\"django.contrib.auth.backends.RemoteUserBackend\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RemoteUserBackend</span></code></a> le font. Vous pouvez utiliser <a class=\"reference internal\" href=\"#django.contrib.auth.backends.AllowAllUsersModelBackend\" title=\"django.contrib.auth.backends.AllowAllUsersModelBackend\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AllowAllUsersModelBackend</span></code></a> ou <a class=\"reference internal\" href=\"#django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\" title=\"django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AllowAllUsersRemoteUserBackend</span></code></a> si vous voulez autoriser les utilisateurs inactifs à se connecter. Dans ce cas, vous devrez aussi adapter le formulaire <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AuthenticationForm</span></code></a> utilisé par la vue <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.views.LoginView\" title=\"django.contrib.auth.views.LoginView\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LoginView</span></code></a> car il rejette les utilisateurs inactifs. Soyez conscient que les méthodes de contrôle des permissions telles que <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.has_perm\" title=\"django.contrib.auth.models.User.has_perm\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">has_perm()</span></code></a> ainsi que l’authentification dans le site d’administration de Django renvoient toutes <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> pour les utilisateurs inactifs.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_superuser\">\n<span class=\"sig-name descname\"><span class=\"pre\">is_superuser</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_superuser\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Valeur booléenne. Considère cet utilisateur comme ayant toutes les permissions sans devoir lui en attribuer aucune en particulier.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.last_login\">\n<span class=\"sig-name descname\"><span class=\"pre\">last_login</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.last_login\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Horodatage de la dernière connexion de l’utilisateur.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.date_joined\">\n<span class=\"sig-name descname\"><span class=\"pre\">date_joined</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.date_joined\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>L’horodatage de la création du compte.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"attributes\">\n<h3>Attributs<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">User</span></span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_authenticated\">\n<span class=\"sig-name descname\"><span class=\"pre\">is_authenticated</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_authenticated\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Attribut en lecture seule qui vaut toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (contrairement à <code class=\"docutils literal notranslate\"><span class=\"pre\">AnonymousUser.is_authenticated</span></code> qui vaut toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>). 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 drapeau <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> de l’utilisateur ou sur la validité de la session. Même si cet attribut est généralement consulté pour <code class=\"docutils literal notranslate\"><span class=\"pre\">request.user</span></code> afin de déterminer s’il a été défini par <a class=\"reference internal\" href=\"/fr/6.0/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware\" title=\"django.contrib.auth.middleware.AuthenticationMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AuthenticationMiddleware</span></code></a> (représentant l’utilisateur actuellement connecté), vous devez savoir que cet attribut vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> pour toute instance de <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">User</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_anonymous\">\n<span class=\"sig-name descname\"><span class=\"pre\">is_anonymous</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_anonymous\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Attribut en lecture seule qui vaut toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. C’est une façon de différencier les objets <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">User</span></code></a> des objets <a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AnonymousUser</span></code></a>. Généralement, il vaut mieux utiliser <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_authenticated\" title=\"django.contrib.auth.models.User.is_authenticated\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_authenticated</span></code></a> que cet attribut.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"methods\">\n<h3>Méthodes<a class=\"heading-anchor\" href=\"#methods\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">User</span></span></dt>\n<dd><dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_username\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_username</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_username\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le nom d’utilisateur de cet utilisateur. Comme le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">User</span></code> peut être substitué, il est préférable d’utiliser cette méthode plutôt que de référencer directement l’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">username</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_full_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_full_name</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_full_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.first_name\" title=\"django.contrib.auth.models.User.first_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">first_name</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.last_name\" title=\"django.contrib.auth.models.User.last_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">last_name</span></code></a> séparés par une espace.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_short_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_short_name</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_short_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le prénom (<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.first_name\" title=\"django.contrib.auth.models.User.first_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">first_name</span></code></a>).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.set_password\">\n<span class=\"sig-name descname\"><span class=\"pre\">set_password</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">raw_password</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.set_password\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>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 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">User</span></code></a> n’est pas enregistré par cette méthode.</p>\n<p>Lorsque <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_password</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, le mot de passe sera défini comme non utilisable, comme si on avait appelé <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.set_unusable_password\" title=\"django.contrib.auth.models.User.set_unusable_password\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">set_unusable_password()</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.check_password\">\n<span class=\"sig-name descname\"><span class=\"pre\">check_password</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">raw_password</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.check_password\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.acheck_password\">\n<span class=\"sig-name descname\"><span class=\"pre\">acheck_password</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">raw_password</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.acheck_password\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em>: <code class=\"docutils literal notranslate\"><span class=\"pre\">acheck_password()</span></code></p>\n<p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si 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).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.set_unusable_password\">\n<span class=\"sig-name descname\"><span class=\"pre\">set_unusable_password</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.set_unusable_password\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Marque l’utilisateur comme n’ayant pas de mot de passe défini en mettant à jour les métadonnées dans le champ <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.password\" title=\"django.contrib.auth.models.User.password\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">password</span></code></a>. Ce n’est pas la même chose que de définir une chaîne vide comme mot de passe. <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.check_password\" title=\"django.contrib.auth.models.User.check_password\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">check_password()</span></code></a> ne renvoie jamais <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> pour cet utilisateur. L’objet <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">User</span></code></a> n’est pas enregistré par cette méthode.</p>\n<p>Cela peut être utile si le processus d’authentification de votre application se fait par une source externe existante telle qu’un annuaire LDAP.</p>\n<aside class=\"admonition-password-reset-restriction admonition\">\n<p class=\"admonition-title\">Restriction sur la réinitialisation du mot de passe</p>\n<p>Les utilisateurs ayant un mot de passe inutilisable ne pourront pas demander une réinitialisation du mot de passe par courriel via <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.views.PasswordResetView\" title=\"django.contrib.auth.views.PasswordResetView\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">PasswordResetView</span></code></a>.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.has_usable_password\">\n<span class=\"sig-name descname\"><span class=\"pre\">has_usable_password</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_usable_password\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> si <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.set_unusable_password\" title=\"django.contrib.auth.models.User.set_unusable_password\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">set_unusable_password()</span></code></a> a été appelée pour cet utilisateur.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_user_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_user_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_user_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.aget_user_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">aget_user_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.aget_user_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_user_permissions()</span></code></p>\n<p>Renvoie l’ensemble des permissions (chaînes) que l’utilisateur obtient directement.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> est transmis, ne renvoie que les permissions d’utilisateur liées à cet objet spécifique.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_user_permissions()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_group_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_group_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_group_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.aget_group_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">aget_group_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.aget_group_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_group_permissions()</span></code></p>\n<p>Renvoie l’ensemble des permissions (chaînes) que l’utilisateur obtient au travers des groupes auxquels il appartient.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> est transmis, ne renvoie que les permissions de groupe liées à cet objet spécifique.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_group_permissions()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_all_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_all_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_all_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.aget_all_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">aget_all_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.aget_all_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_all_permissions()</span></code></p>\n<p>Renvoie l’ensemble des permissions (chaînes) que l’utilisateur obtient directement ou au travers des groupes auxquels il appartient.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> est transmis, ne renvoie que les permissions liées à cet objet spécifique.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_all_permissions()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.has_perm\">\n<span class=\"sig-name descname\"><span class=\"pre\">has_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_perm\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.ahas_perm\">\n<span class=\"sig-name descname\"><span class=\"pre\">ahas_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.ahas_perm\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em>: <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_perm()</span></code></p>\n<p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si l’utilisateur possède la permission indiquée, où <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code> est au format <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;&lt;étiquette</span> <span class=\"pre\">application&gt;.&lt;code</span> <span class=\"pre\">permission&gt;&quot;</span></code> (voir la documentation sur les <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#topic-authorization\"><span class=\"std std-ref\">permissions</span></a>). Si l’utilisateur est inactif, cette méthode renvoie toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. Pour un superutilisateur actif, cette méthode renvoie toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> est transmis, cette méthode ne contrôle pas la permission au niveau du modèle, mais pour l’objet indiqué.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_perm()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.has_perms\">\n<span class=\"sig-name descname\"><span class=\"pre\">has_perms</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm_list</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_perms\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.ahas_perms\">\n<span class=\"sig-name descname\"><span class=\"pre\">ahas_perms</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm_list</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.ahas_perms\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em>: <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_perms()</span></code></p>\n<p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si l’utilisateur possède toutes les permissions indiquées, où chaque permission est au format <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;&lt;étiquette</span> <span class=\"pre\">application&gt;.&lt;code</span> <span class=\"pre\">permission&gt;&quot;</span></code>. Si l’utilisateur est inactif, cette méthode renvoie toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. Pour un superutilisateur actif, cette méthode renvoie toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> est transmis, cette méthode ne contrôle pas les permissions au niveau du modèle, mais pour l’objet indiqué.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_perms()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.has_module_perms\">\n<span class=\"sig-name descname\"><span class=\"pre\">has_module_perms</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">package_name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_module_perms\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.ahas_module_perms\">\n<span class=\"sig-name descname\"><span class=\"pre\">ahas_module_perms</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">package_name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.ahas_module_perms\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em>: <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_module_perms()</span></code></p>\n<p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si 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 toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. Pour un superutilisateur actif, cette méthode renvoie toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_module_perms()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.email_user\">\n<span class=\"sig-name descname\"><span class=\"pre\">email_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">subject</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">from_email</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.email_user\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Envoie un courriel à l’utilisateur. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">from_email</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, Django utilise <a class=\"reference internal\" href=\"/fr/6.0/ref/settings/#std-setting-DEFAULT_FROM_EMAIL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_FROM_EMAIL</span></code></a>. Tout paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">**kwargs</span></code> sera transmis à l’appel sous-jacent <a class=\"reference internal\" href=\"/fr/6.0/topics/email/#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code></a>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"manager-methods\">\n<h3>Méthodes du gestionnaire<a class=\"heading-anchor\" href=\"#manager-methods\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">UserManager</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le modèle <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">User</span></code></a> possède un gestionnaire personnalisé comportant les méthodes utilitaires suivantes (en plus de celles fournies par <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.BaseUserManager\" title=\"django.contrib.auth.models.BaseUserManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BaseUserManager</span></code></a>) :</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager.create_user\">\n<span class=\"sig-name descname\"><span class=\"pre\">create_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">username</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">email</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">password</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra_fields</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.create_user\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager.acreate_user\">\n<span class=\"sig-name descname\"><span class=\"pre\">acreate_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">username</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">email</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">password</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra_fields</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.acreate_user\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">acreate_user()</span></code></p>\n<p>Crée, enregistre et renvoie un objet <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">User</span></code></a>.</p>\n<p>Les attributs <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.username\" title=\"django.contrib.auth.models.User.username\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">username</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.password\" title=\"django.contrib.auth.models.User.password\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">password</span></code></a> sont définis en fonction des paramètres transmis. La partie domaine de <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.email\" title=\"django.contrib.auth.models.User.email\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">email</span></code></a> est automatiquement convertie en minuscules et l’attribut <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_active</span></code></a> de l’objet <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">User</span></code></a> renvoyé sera défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n<p>Si aucun mot de passe n’est indiqué, <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.set_unusable_password\" title=\"django.contrib.auth.models.User.set_unusable_password\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">set_unusable_password()</span></code></a> est appelée.</p>\n<p>Si aucune adresse de courriel n’est indiquée, <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.email\" title=\"django.contrib.auth.models.User.email\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">email</span></code></a> sera défini à une chaîne vide.</p>\n<p>Les paramètres nommés <code class=\"docutils literal notranslate\"><span class=\"pre\">extra_fields</span></code> sont directement transmis à la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__</span></code> de la classe <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">User</span></code></a>, de manière à permettre la définition de champs supplémentaires sans restriction dans un <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#auth-custom-user\"><span class=\"std std-ref\">modèle d’utilisateur personnalisé</span></a>.</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#topics-auth-creating-users\"><span class=\"std std-ref\">Création d’utilisateurs</span></a> pour un exemple d’utilisation.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">acreate_user()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager.create_superuser\">\n<span class=\"sig-name descname\"><span class=\"pre\">create_superuser</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">username</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">email</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">password</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra_fields</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.create_superuser\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager.acreate_superuser\">\n<span class=\"sig-name descname\"><span class=\"pre\">acreate_superuser</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">username</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">email</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">password</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra_fields</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.acreate_superuser\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">acreate_superuser()</span></code></p>\n<p>Identique à <a class=\"reference internal\" href=\"#django.contrib.auth.models.UserManager.create_user\" title=\"django.contrib.auth.models.UserManager.create_user\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">create_user()</span></code></a>, mais définit <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_staff\" title=\"django.contrib.auth.models.User.is_staff\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_staff</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_superuser\" title=\"django.contrib.auth.models.User.is_superuser\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_superuser</span></code></a> à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">acreate_superuser()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager.with_perm\">\n<span class=\"sig-name descname\"><span class=\"pre\">with_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">is_active</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">include_superusers</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">backend</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.with_perm\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie les utilisateurs ayant la permission <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code> donnée soit dans le format <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;&lt;nom_app&gt;.&lt;code_de_permission&gt;&quot;</span></code>, soit comme instance de <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Permission</span></code></a>. Un jeu de requête vide est renvoyé si aucun utilisateur ne possède la permission <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code>.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (par défaut), ne renvoie que des utilisateurs actifs. Avec la valeur <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, ne renvoie que des utilisateurs inactifs. Indiquez <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> pour ne pas tenir compte de l’état actif des utilisateurs dans la recherche.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">include_superusers</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (par défaut), le résultat contiendra aussi les superutilisateurs.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">backend</span></code> est transmis et qu’il est défini dans <a class=\"reference internal\" href=\"/fr/6.0/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTHENTICATION_BACKENDS</span></code></a>, alors cette méthode va l’utiliser. Sinon, elle utilisera la valeur <code class=\"docutils literal notranslate\"><span class=\"pre\">backend</span></code> dans <a class=\"reference internal\" href=\"/fr/6.0/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTHENTICATION_BACKENDS</span></code></a>, s’il y en a qu’une, ou générer une exception.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n</section>\n<section id=\"anonymoususer-object\">\n<h2>L’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">AnonymousUser</span></code><a class=\"heading-anchor\" href=\"#anonymoususer-object\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.AnonymousUser\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">AnonymousUser</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.AnonymousUser\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.models.AnonymousUser</span></code></a> est une classe qui implémente l’interface <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.models.User</span></code></a>, avec les différences suivantes :</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/fr/6.0/topics/db/models/#automatic-primary-key-fields\"><span class=\"std std-ref\">id</span></a> est toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.username\" title=\"django.contrib.auth.models.User.username\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">username</span></code></a> contient toujours la chaîne vide.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.get_username\" title=\"django.contrib.auth.models.User.get_username\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_username()</span></code></a> renvoie toujours la chaîne vide.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_anonymous\" title=\"django.contrib.auth.models.User.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_anonymous</span></code></a> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> au lieu de <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_authenticated\" title=\"django.contrib.auth.models.User.is_authenticated\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_authenticated</span></code></a> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> au lieu de <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_staff\" title=\"django.contrib.auth.models.User.is_staff\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_staff</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_superuser\" title=\"django.contrib.auth.models.User.is_superuser\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_superuser</span></code></a> sont toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_active</span></code></a> est toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.groups\" title=\"django.contrib.auth.models.User.groups\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">groups</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.user_permissions\" title=\"django.contrib.auth.models.User.user_permissions\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">user_permissions</span></code></a> sont toujours vides.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.set_password\" title=\"django.contrib.auth.models.User.set_password\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">set_password()</span></code></a>, <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.check_password\" title=\"django.contrib.auth.models.User.check_password\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">check_password()</span></code></a>, <a class=\"reference internal\" href=\"/fr/6.0/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">save()</span></code></a> et <a class=\"reference internal\" href=\"/fr/6.0/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">delete()</span></code></a> génèrent l’exception <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#NotImplementedError\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">NotImplementedError</span></code></a>.</p></li>\n</ul>\n</dd></dl>\n\n<p>En pratique, vous n’aurez probablement jamais besoin d’utiliser directement des objets <a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AnonymousUser</span></code></a> vous-même, mais ils sont utilisés dans les requêtes web, comme expliqué dans la section suivante.</p>\n</section>\n<section id=\"permission-model\">\n<h2>Le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">Permission</span></code><a class=\"heading-anchor\" href=\"#permission-model\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">Permission</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<section id=\"id1\">\n<h3>Champs<a class=\"heading-anchor\" href=\"#id1\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les objets <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Permission</span></code></a> possèdent les champs suivants :</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">Permission</span></span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission.name\">\n<span class=\"sig-name descname\"><span class=\"pre\">name</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission.name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Obligatoire. 255 caractères au maximum. Exemple : <code class=\"docutils literal notranslate\"><span class=\"pre\">'Can</span> <span class=\"pre\">vote'</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission.content_type\">\n<span class=\"sig-name descname\"><span class=\"pre\">content_type</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission.content_type\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Obligatoire. Une clé étrangère vers le modèle <a class=\"reference internal\" href=\"/fr/6.0/ref/contrib/contenttypes/#django.contrib.contenttypes.models.ContentType\" title=\"django.contrib.contenttypes.models.ContentType\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ContentType</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission.codename\">\n<span class=\"sig-name descname\"><span class=\"pre\">codename</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission.codename\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Obligatoire. 100 caractères au maximum. Exemple : <code class=\"docutils literal notranslate\"><span class=\"pre\">'can_vote'</span></code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"id2\">\n<h3>Méthodes<a class=\"heading-anchor\" href=\"#id2\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les objets <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Permission</span></code></a> possèdent les mêmes méthodes d’accès aux données que tout autre <a class=\"reference internal\" href=\"/fr/6.0/ref/models/instances/\"><span class=\"doc\">modèle Django</span></a>.</p>\n</section>\n</section>\n<section id=\"group-model\">\n<h2>Le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">Group</span></code><a class=\"heading-anchor\" href=\"#group-model\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Group\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">Group</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Group\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<section id=\"id3\">\n<h3>Champs<a class=\"heading-anchor\" href=\"#id3\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les objets <a class=\"reference internal\" href=\"#django.contrib.auth.models.Group\" title=\"django.contrib.auth.models.Group\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Group</span></code></a> possèdent les champs suivants :</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">Group</span></span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Group.name\">\n<span class=\"sig-name descname\"><span class=\"pre\">name</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Group.name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Obligatoire. 150 caractères au maximum. Tous les caractères sont autorisés. Exemple : <code class=\"docutils literal notranslate\"><span class=\"pre\">'Utilisateurs</span> <span class=\"pre\">fantastiques'</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Group.permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">permissions</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Group.permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une relation plusieurs-à-plusieurs vers <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Permission</span></code></a>.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">permissions</span><span class=\"o\">.</span><span class=\"n\">set</span><span class=\"p\">([</span><span class=\"n\">permission_list</span><span class=\"p\">])</span>\n<span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">permissions</span><span class=\"o\">.</span><span class=\"n\">add</span><span class=\"p\">(</span><span class=\"n\">permission</span><span class=\"p\">,</span> <span class=\"n\">permission</span><span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">)</span>\n<span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">permissions</span><span class=\"o\">.</span><span class=\"n\">remove</span><span class=\"p\">(</span><span class=\"n\">permission</span><span class=\"p\">,</span> <span class=\"n\">permission</span><span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">)</span>\n<span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">permissions</span><span class=\"o\">.</span><span class=\"n\">clear</span><span class=\"p\">()</span>\n</code></pre></div>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n</section>\n<section id=\"validators\">\n<h2>Validateurs<a class=\"heading-anchor\" href=\"#validators\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.validators.ASCIIUsernameValidator\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">validators.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ASCIIUsernameValidator</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.validators.ASCIIUsernameValidator\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un validateur de champ n’autorisant que les caractères ASCII en plus de <code class=\"docutils literal notranslate\"><span class=\"pre\">&#64;</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">.</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">+</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">-</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">_</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.validators.UnicodeUsernameValidator\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">validators.</span></span><span class=\"sig-name descname\"><span class=\"pre\">UnicodeUsernameValidator</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.validators.UnicodeUsernameValidator\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un validateur de champ autorisant les caractères Unicode en plus de <code class=\"docutils literal notranslate\"><span class=\"pre\">&#64;</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">.</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">+</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">-</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">_</span></code>. Il s’agit du validateur par défaut pour <code class=\"docutils literal notranslate\"><span class=\"pre\">User.username</span></code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.contrib.auth.signals\">\n<span id=\"login-and-logout-signals\"></span><span id=\"topics-auth-signals\"></span><h2>Signaux de connexion et de déconnexion<a class=\"heading-anchor\" href=\"#module-django.contrib.auth.signals\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>L’infrastructure d’authentification définit les <a class=\"reference internal\" href=\"/fr/6.0/topics/signals/\"><span class=\"doc\">signaux</span></a> suivants qui peuvent être utilisés comme notification lorsqu’un utilisateur se connecte ou se déconnecte.</p>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.signals.user_logged_in\">\n<span class=\"sig-name descname\"><span class=\"pre\">user_logged_in</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.signals.user_logged_in\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Envoyé lorsqu’un utilisateur se connecte avec succès.</p>\n<p>Paramètres envoyés avec ce signal :</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">sender</span></code></dt><dd><p>La classe de l’utilisateur qui vient de se connecter.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code></dt><dd><p>L’instance <a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> actuelle.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">user</span></code></dt><dd><p>L’instance utilisateur qui vient de se connecter.</p>\n</dd>\n</dl>\n</dd></dl>\n\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.signals.user_logged_out\">\n<span class=\"sig-name descname\"><span class=\"pre\">user_logged_out</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.signals.user_logged_out\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Envoyé lorsque la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">logout</span></code> est appelée.</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">sender</span></code></dt><dd><p>Comme ci-dessus : la classe de l’utilisateur qui vient de se déconnecter ou <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> si l’utilisateur n’était pas authentifié.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code></dt><dd><p>L’instance <a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> actuelle.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">user</span></code></dt><dd><p>L’instance de l’utilisateur qui vient de se déconnecter ou <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> si l’utilisateur n’était pas authentifié.</p>\n</dd>\n</dl>\n</dd></dl>\n\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.signals.user_login_failed\">\n<span class=\"sig-name descname\"><span class=\"pre\">user_login_failed</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.signals.user_login_failed\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Envoyé lorsque le processus de connexion d’un utilisateur a échoué.</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">sender</span></code></dt><dd><p>Le nom du module utilisé pour l’authentification.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">credentials</span></code></dt><dd><p>Un dictionnaire de paramètres nommés contenant les données d’authentification qui ont été transmises à <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">authenticate()</span></code></a> 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.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code></dt><dd><p>L’objet <a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> pour autant qu’il ait été fourni à <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">authenticate()</span></code></a>.</p>\n</dd>\n</dl>\n</dd></dl>\n\n</section>\n<section id=\"module-django.contrib.auth.backends\">\n<span id=\"authentication-backends\"></span><span id=\"authentication-backends-reference\"></span><h2>Moteurs d’authentification<a class=\"heading-anchor\" href=\"#module-django.contrib.auth.backends\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>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 <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#authentication-backends\"><span class=\"std std-ref\">Autres sources d’authentification</span></a> du <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/\"><span class=\"doc\">Guide d’authentification des utilisateurs</span></a>.</p>\n<section id=\"available-authentication-backends\">\n<h3>Moteurs d’authentification disponibles<a class=\"heading-anchor\" href=\"#available-authentication-backends\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les moteurs suivants sont disponibles dans <a class=\"reference internal\" href=\"#module-django.contrib.auth.backends\" title=\"django.contrib.auth.backends: Django's built-in authentication backend classes.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.backends</span></code></a>:</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">BaseBackend</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>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.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.get_user_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_user_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.get_user_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.aget_user_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">aget_user_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.aget_user_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_user_permissions()</span></code></p>\n<p>Renvoie un ensemble vide.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_user_permissions()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.get_group_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_group_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.get_group_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.aget_group_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">aget_group_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.aget_group_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_group_permissions()</span></code></p>\n<p>Renvoie un ensemble vide.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_group_permissions()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.get_all_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_all_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.get_all_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.aget_all_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">aget_all_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.aget_all_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_all_permissions()</span></code></p>\n<p>Utilise <a class=\"reference internal\" href=\"#django.contrib.auth.backends.BaseBackend.get_user_permissions\" title=\"django.contrib.auth.backends.BaseBackend.get_user_permissions\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_user_permissions()</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.auth.backends.BaseBackend.get_group_permissions\" title=\"django.contrib.auth.backends.BaseBackend.get_group_permissions\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_group_permissions()</span></code></a> pour obtenir l’ensemble des chaînes de permission dont dispose <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_all_permissions()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.has_perm\">\n<span class=\"sig-name descname\"><span class=\"pre\">has_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.has_perm\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.ahas_perm\">\n<span class=\"sig-name descname\"><span class=\"pre\">ahas_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.ahas_perm\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em>: <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_perm()</span></code></p>\n<p>Utilise <a class=\"reference internal\" href=\"#django.contrib.auth.backends.BaseBackend.get_all_permissions\" title=\"django.contrib.auth.backends.BaseBackend.get_all_permissions\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_all_permissions()</span></code></a> pour vérifier si <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> possède la chaîne de permission <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_perm()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ModelBackend</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>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 (<code class=\"docutils literal notranslate\"><span class=\"pre\">username</span></code>), pour les modèles d’utilisateur personnalisés, c’est le champ contenu dans <code class=\"docutils literal notranslate\"><span class=\"pre\">USERNAME_FIELD</span></code> (voir <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/\"><span class=\"doc\">Personnalisation des utilisateurs et de l’authentification</span></a>).</p>\n<p>Il gère également le modèle de permissions par défaut tel que défini pour <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">User</span></code></a> et <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.PermissionsMixin\" title=\"django.contrib.auth.models.PermissionsMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">PermissionsMixin</span></code></a>.</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.has_perm\" title=\"django.contrib.auth.backends.ModelBackend.has_perm\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">has_perm()</span></code></a>, <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_all_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_all_permissions\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_all_permissions()</span></code></a>, <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_user_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_user_permissions\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_user_permissions()</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_group_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_group_permissions\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_group_permissions()</span></code></a> 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 si</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.with_perm\" title=\"django.contrib.auth.backends.ModelBackend.with_perm\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">with_perm()</span></code></a> also allows an object to be passed as a parameter, but\nunlike other methods it returns an empty queryset if <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span> <span class=\"pre\">is</span> <span class=\"pre\">not</span> <span class=\"pre\">None</span></code>.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.authenticate\">\n<span class=\"sig-name descname\"><span class=\"pre\">authenticate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">username</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">password</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.authenticate\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.aauthenticate\">\n<span class=\"sig-name descname\"><span class=\"pre\">aauthenticate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">username</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">password</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.aauthenticate\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em>: <code class=\"docutils literal notranslate\"><span class=\"pre\">aauthenticate()</span></code></p>\n<p>Essaie d’authentifier  <code class=\"docutils literal notranslate\"><span class=\"pre\">username</span></code> avec <code class=\"docutils literal notranslate\"><span class=\"pre\">password</span></code> en appelant <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.check_password\" title=\"django.contrib.auth.models.User.check_password\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">User.check_password</span></code></a>. Si aucun <code class=\"docutils literal notranslate\"><span class=\"pre\">username</span></code> n’est fourni, elle essaie d’obtenir un nom d’utilisateur à partir de <code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code> avec la clé <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.CustomUser.USERNAME_FIELD\" title=\"django.contrib.auth.models.CustomUser.USERNAME_FIELD\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">CustomUser.USERNAME_FIELD</span></code></a>. Renvoie soit un utilisateur authentifié, soit <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> est un objet <a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> et peut valoir <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> s’il n’a pas été fourni à <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">authenticate()</span></code></a> (laquelle le transmet au moteur d’authentification).</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">aauthenticate()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.get_user_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_user_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.get_user_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.aget_user_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">aget_user_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.aget_user_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_user_permissions()</span></code></p>\n<p>Renvoie l’ensemble des chaînes de permissions dont <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> bénéficie à partir de ses propres permissions d’utilisateur. Renvoie un ensemble vide si <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous\" title=\"django.contrib.auth.models.AbstractBaseUser.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_anonymous</span></code></a> ou si <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_active</span></code></a> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_user_permissions()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.get_group_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_group_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.get_group_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.aget_group_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">aget_group_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.aget_group_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_group_permissions()</span></code></p>\n<p>Renvoie l’ensemble des chaînes de permissions dont <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> bénéficie à partir des permissions des groupes auxquels il appartient. Renvoie un ensemble vide si <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous\" title=\"django.contrib.auth.models.AbstractBaseUser.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_anonymous</span></code></a> ou si <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_active</span></code></a> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_group_permissions()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.get_all_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_all_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.get_all_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.aget_all_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">aget_all_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.aget_all_permissions\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_all_permissions()</span></code></p>\n<p>Renvoie l’ensemble des chaînes de permissions dont <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> bénéficie, que ce soit en son nom propre ou au travers des groupes auxquels il appartient. Renvoie un ensemble vide si <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous\" title=\"django.contrib.auth.models.AbstractBaseUser.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_anonymous</span></code></a> ou si <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_active</span></code></a> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_all_permissions()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.has_perm\">\n<span class=\"sig-name descname\"><span class=\"pre\">has_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.has_perm\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.ahas_perm\">\n<span class=\"sig-name descname\"><span class=\"pre\">ahas_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.ahas_perm\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em>: <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_perm()</span></code></p>\n<p>Utilise <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_all_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_all_permissions\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_all_permissions()</span></code></a> pour vérifier si <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> possède la chaîne de permission <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code>. Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> si l’utilisateur n’est pas <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_active</span></code></a>.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_perm()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.has_module_perms\">\n<span class=\"sig-name descname\"><span class=\"pre\">has_module_perms</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_label</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.has_module_perms\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.ahas_module_perms\">\n<span class=\"sig-name descname\"><span class=\"pre\">ahas_module_perms</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_label</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.ahas_module_perms\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em>: <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_module_perms()</span></code></p>\n<p>Indique si <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> possède au moins une permission pour l’application <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">ahas_module_perms()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.user_can_authenticate\">\n<span class=\"sig-name descname\"><span class=\"pre\">user_can_authenticate</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.user_can_authenticate\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Indique si l’utilisateur est autorisé à s’authentifier. Pour correspondre au comportement de <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AuthenticationForm</span></code></a> qui <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\" title=\"django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">interdit</span> <span class=\"pre\">aux</span> <span class=\"pre\">utilisateurs</span> <span class=\"pre\">inactifs</span> <span class=\"pre\">de</span> <span class=\"pre\">se</span> <span class=\"pre\">connecter</span></code></a>, cette méthode renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> pour les utilisateurs ayant <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_active=False</span></code></a>. Les modèles d’utilisateurs personnalisés n’ayant pas de champ <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_active</span></code></a> sont autorisés.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.with_perm\">\n<span class=\"sig-name descname\"><span class=\"pre\">with_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">is_active</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">include_superusers</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.with_perm\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie tous les utilisateurs actifs ayant la permission <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code> soit sous la forme <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;&lt;nom_app&gt;.&lt;code_de_permission&gt;&quot;</span></code>, soit comme instance de <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Permission</span></code></a>. Un jeu de requête vide est renvoyé si aucun utilisateur ne possède la permission <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code>.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (par défaut), ne renvoie que des utilisateurs actifs. Avec la valeur <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, ne renvoie que des utilisateurs inactifs. Indiquez <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> pour ne pas tenir compte de l’état actif des utilisateurs dans la recherche.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">include_superusers</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (par défaut), le résultat contiendra aussi les superutilisateurs.</p>\n</dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.AllowAllUsersModelBackend\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">AllowAllUsersModelBackend</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.AllowAllUsersModelBackend\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Identique à <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend\" title=\"django.contrib.auth.backends.ModelBackend\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelBackend</span></code></a> sauf qu’il ne rejette pas les utilisateurs inactifs parce que <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.user_can_authenticate\" title=\"django.contrib.auth.backends.ModelBackend.user_can_authenticate\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">user_can_authenticate()</span></code></a> renvoie toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n<p>Lorsque ce moteur est utilisé, il vaut probablement mieux adapter le formulaire <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AuthenticationForm</span></code></a> utilisé par la vue <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.views.LoginView\" title=\"django.contrib.auth.views.LoginView\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LoginView</span></code></a> en surchargeant la méthode <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\" title=\"django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">confirm_login_allowed()</span></code></a> car celle-ci rejette les utilisateurs inactifs.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">RemoteUserBackend</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Utilisez ce moteur pour profiter de processus d’authentification externes à Django. Le processus d’authentification utilise les noms d’utilisateur se trouvant dans <a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.HttpRequest.META\" title=\"django.http.HttpRequest.META\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">request.META['REMOTE_USER']</span></code></a>. Consultez la documentation sur l’<a class=\"reference internal\" href=\"/fr/6.0/howto/auth-remote-user/\"><span class=\"doc\">authentification par REMOTE_USER</span></a>.</p>\n<p>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 :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\">\n<span class=\"sig-name descname\"><span class=\"pre\">create_unknown_user</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. 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 est <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.authenticate\">\n<span class=\"sig-name descname\"><span class=\"pre\">authenticate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">remote_user</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.authenticate\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.aauthenticate\">\n<span class=\"sig-name descname\"><span class=\"pre\">aauthenticate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">remote_user</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.aauthenticate\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em>: <code class=\"docutils literal notranslate\"><span class=\"pre\">aauthenticate()</span></code></p>\n<p>Le nom d’utilisateur transmis à <code class=\"docutils literal notranslate\"><span class=\"pre\">remote_user</span></code> est considéré comme sûr. Cette méthode renvoie l’objet utilisateur ayant le nom d’utilisateur indiqué, créant un nouvel utilisateur si <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\" title=\"django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">create_unknown_user</span></code></a> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n<p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> si <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\" title=\"django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">create_unknown_user</span></code></a> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> et un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">User</span></code> ayant le nom d’utilisateur indiqué si ce dernier n’existe pas encore dans la base de données.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> est un objet <a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> et peut valoir <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> s’il n’a pas été fourni à <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">authenticate()</span></code></a> (laquelle le transmet au moteur d’authentification).</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">aauthenticate()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.clean_username\">\n<span class=\"sig-name descname\"><span class=\"pre\">clean_username</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">username</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.clean_username\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Procède au nettoyage de <code class=\"docutils literal notranslate\"><span class=\"pre\">username</span></code> (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é.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.configure_user\">\n<span class=\"sig-name descname\"><span class=\"pre\">configure_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">created</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.configure_user\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.aconfigure_user\">\n<span class=\"sig-name descname\"><span class=\"pre\">aconfigure_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">created</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.aconfigure_user\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">aconfigure_user()</span></code></p>\n<p>Configure l’utilisateur lors de chaque tentative d’authentification. Cette méthode est appelée immédiatement après la création ou l’obtention de l’utilisateur en cours d’authentification et elle 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. Lorsque l’obtention ou la création d’un utilisateur est appelée à partir d’un contexte synchrone, <code class=\"docutils literal notranslate\"><span class=\"pre\">configure_user</span></code> est appelée, et dans le cas d’un contexte asynchrone, c’est <code class=\"docutils literal notranslate\"><span class=\"pre\">aconfigure_user</span></code> qui sera appelée.</p>\n<p>La configuration peut être effectuée soit une fois lorsque l’utilisateur est créé (<code class=\"docutils literal notranslate\"><span class=\"pre\">created</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>), soit sur les utilisateurs existants (<code class=\"docutils literal notranslate\"><span class=\"pre\">created</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>) comme une manière de synchroniser les attributs entre les systèmes distants et locaux.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> est un objet <a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> et peut valoir <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> s’il n’a pas été fourni à <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">authenticate()</span></code></a> (laquelle le transmet au moteur d’authentification).</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">aconfigure_user()</span></code> a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\">\n<span class=\"sig-name descname\"><span class=\"pre\">user_can_authenticate</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Indique si l’utilisateur est autorisé à s’authentifier. Cette méthode renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> pour les utilisateurs ayant <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_active=False</span></code></a>. Les modèles d’utilisateurs personnalisés n’ayant pas de champ <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_active</span></code></a> sont autorisés.</p>\n</dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">AllowAllUsersRemoteUserBackend</span></span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Identique à <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend\" title=\"django.contrib.auth.backends.RemoteUserBackend\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RemoteUserBackend</span></code></a> sauf qu’il ne rejette pas les utilisateurs inactifs parce que <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\" title=\"django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">user_can_authenticate</span></code></a> renvoie toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"utility-functions\">\n<h2>Fonctions utilitaires<a class=\"heading-anchor\" href=\"#utility-functions\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.get_user\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.get_user\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.aget_user\">\n<span class=\"sig-name descname\"><span class=\"pre\">aget_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.aget_user\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Version asynchrone</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">aget_user()</span></code></p>\n<p>Renvoie l’instance de modèle utilisateur associée à la session de la requête <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> donnée.</p>\n<p>Elle contrôle si le moteur d’authentification stocké dans la session est présent dans <a class=\"reference internal\" href=\"/fr/6.0/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTHENTICATION_BACKENDS</span></code></a>. Si oui, elle utilise la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">get_user()</span></code> du moteur pour récupérer l’instance de modèle utilisateur puis vérifie la session en appelant la méthode <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.get_session_auth_hash\" title=\"django.contrib.auth.models.AbstractBaseUser.get_session_auth_hash\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_session_auth_hash()</span></code></a> du modèle utilisateur. Si la vérification échoue et que <a class=\"reference internal\" href=\"/fr/6.0/ref/settings/#std-setting-SECRET_KEY_FALLBACKS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECRET_KEY_FALLBACKS</span></code></a> est défini, elle vérifie la session en fonction de chaque clé mentionnée en utilisant <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.get_session_auth_fallback_hash\" title=\"django.contrib.auth.models.AbstractBaseUser.get_session_auth_fallback_hash\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_session_auth_fallback_hash()</span></code></a>.</p>\n<p>Renvoie une instance de <a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AnonymousUser</span></code></a> si le moteur d’authentification stocké dans la session n’est plus dans <a class=\"reference internal\" href=\"/fr/6.0/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTHENTICATION_BACKENDS</span></code></a>, si un utilisateur n’est pas renvoyé par la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">get_user()</span></code> du moteur ou si l’empreinte d’authentification de la session n’est pas valide.</p>\n</dd></dl>\n\n</section>","rootId":"django-contrib-auth","toc":[{"title":"Le modèle User","anchor":"user-model","children":[{"title":"Champs","anchor":"fields","children":[]},{"title":"Attributs","anchor":"attributes","children":[]},{"title":"Méthodes","anchor":"methods","children":[]},{"title":"Méthodes du gestionnaire","anchor":"manager-methods","children":[]}]},{"title":"L’objet AnonymousUser","anchor":"anonymoususer-object","children":[]},{"title":"Le modèle Permission","anchor":"permission-model","children":[{"title":"Champs","anchor":"id1","children":[]},{"title":"Méthodes","anchor":"id2","children":[]}]},{"title":"Le modèle Group","anchor":"group-model","children":[{"title":"Champs","anchor":"id3","children":[]}]},{"title":"Validateurs","anchor":"validators","children":[]},{"title":"Signaux de connexion et de déconnexion","anchor":"module-django.contrib.auth.signals","children":[]},{"title":"Moteurs d’authentification","anchor":"module-django.contrib.auth.backends","children":[{"title":"Moteurs d’authentification disponibles","anchor":"available-authentication-backends","children":[]}]},{"title":"Fonctions utilitaires","anchor":"utility-functions","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/6.0/ref/"},{"docname":"ref/contrib/index","title":"Paquets contrib","url":"/fr/6.0/ref/contrib/"}],"prev":{"docname":"ref/contrib/admin/javascript","title":"Personnalisations de JavaScript dans l’interface d’administration","url":"/fr/6.0/ref/contrib/admin/javascript/"},"next":{"docname":"ref/contrib/contenttypes","title":"L’infrastructure des types de contenus (contenttypes)","url":"/fr/6.0/ref/contrib/contenttypes/"},"formats":{"html":"/fr/6.0/ref/contrib/auth/","markdown":"/fr/6.0/ref/contrib/auth.md","json":"/fr/6.0/ref/contrib/auth.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/contrib/auth.txt","official":"https://docs.djangoproject.com/fr/6.0/ref/contrib/auth/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}