Maison >développement back-end >Tutoriel Python >Système d'authentification des utilisateurs Django (1) Objet utilisateur
Objet utilisateur
L'objet utilisateur est le cœur du système d'authentification. Les objets utilisateur sont généralement utilisés pour représenter les utilisateurs d'un site Web et prendre en charge, par exemple, le contrôle d'accès, les utilisateurs enregistrés, l'association de créateurs et de contenu, etc. Il n'y a qu'une seule classe d'utilisateurs dans le cadre d'authentification Django. Par exemple, les superutilisateurs (« superutilisateurs ») ou (« personnel ») sont simplement les mêmes objets utilisateur avec des attributs différents.
Champs par défaut Champs
nom d'utilisateur
Nom d'utilisateur, champ obligatoire. 30 caractères ou moins, peuvent contenir des caractères _, @, , et -.
prénom
Facultatif. 30 caractères ou moins.
last_name
facultatif. 30 caractères ou moins.
e-mail
E-mail, facultatif. Adresse e-mail.
mot de passe
Mot de passe, obligatoire. Django ne stocke pas les mots de passe en texte clair, mais stocke plutôt les hachages.
groupes
Groupes d'utilisateurs. Relation plusieurs-à-plusieurs avec les autorisations du groupe
user_permissions
utilisateur. Relation plusieurs-à-plusieurs avec autorisation
groups = models.ManyToManyField(Group, verbose_name=_('groups'),
blank=True, help_text=_('Les groupes auxquels appartient cet utilisateur. Un utilisateur' query_name="user")
user_permissions = models.ManyToManyField( Permission,
verbose_name=_('user permissions'), blank=True,
help_text=_('Autorisations spécifiques pour cela user.'),
Related_name="user_set", Related_query_name="user" )
is_staff
Booléen. Détermine si les utilisateurs peuvent accéder à l'interface de gestion d'administration. La valeur par défaut est False.
is_active
Booléen. Si l'utilisateur est actif, True par défaut. Généralement, l'utilisateur n'est pas supprimé, mais le is_active de l'utilisateur est défini sur False.
is_superuser
Booléen. La valeur par défaut est False. Lorsqu'il est défini sur True, l'utilisateur obtient toutes les autorisations.
def has_perm(self, perm, obj=None):
"""
interroge tous les backends d'authentification disponibles, mais renvoie immédiatement si un
backend renvoie True. Ainsi, un utilisateur qui a l'autorisation d'un seul
backend d'authentification est supposé avoir l'autorisation en général si un objet est PRvidé, les autorisations pour cet objet spécifique sont vérifiées.
"""
# Les superutilisateurs actifs ont toutes les autorisations. > Retourner _user_has_perm(self, perm, obj)
last_login
L'heure de la dernière connexion est un objet datetime , et la valeur par défaut est l'heure à ce moment-là.
user.last_login = timezone.now()
Heure de création de l'utilisateur
Méthodes
is_anonymous()
is_authenticated()
Renvoyer le prénom plus le nom, avec un espace entre les deux.
get_short_name()
Renvoyer le prénom.
set_password(raw_password)
check_password(raw_password)
get_group_permissions(obj=None)
get_all_permissions(obj=None)
has_perm(perm, obj=None)
has_perms(perm_list, obj=None)
Création d'un utilisateur
Étant donné que le mot de passe de l'objet Utilisateur n'est pas stocké en texte clair, la création d'un objet Utilisateur est différente de la création de modèle habituelle et de la méthode intégrée create_user() doit être utilisé.
>>> de django.contrib.auth.models import User
>>> user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword ')
# À ce stade, l'utilisateur est un objet Utilisateur qui a déjà été enregistré
# dans la base de données. Vous pouvez continuer à modifier ses attributs
# si vous souhaitez modifier d'autres champs.
>>> user.last_name = 'Lennon'
>>> user.save()
Bien sûr, vous pouvez également ajouter des utilisateurs dans l'administrateur interface.
Créer des superutilisateurs
$ python manage.py createsuperuser --username=joe --email=joe@example.com
Changer le mot de passe
Utilisez la méthode intégrée set_password().
>>> de django.contrib.auth.models importer l'utilisateur
>>> >> u.set_password('nouveau mot de passe')
>>> u.save()
Vérifiez si le nom d'utilisateur et le mot de passe donnés sont un utilisateur valide. S’il est valide, un objet User est renvoyé ; s’il n’est pas valide, None est renvoyé. from django.contrib.auth import Authenticate
user = Authenticate(username='john', password='secret')
si l'utilisateur n'est pas Aucun :
# le mot de passe vérifié pour l'utilisateur
if user.is_active:
print("L'utilisateur est valide, actif et authentifié")
else:
print("Le mot de passe est valide, mais le compte a été désactivé !")
else :
# le système d'authentification n'a pas pu vérifier le nom d'utilisateur et le mot de passe
print("Le nom d'utilisateur et le mot de passe étaient incorrects.")