Maison développement back-end Tutoriel Python Explication détaillée du module d'authentification de Django (authentification de l'utilisateur)

Explication détaillée du module d'authentification de Django (authentification de l'utilisateur)

Apr 17, 2018 am 10:41 AM
auth django 用户

Cet article présente principalement l'explication détaillée du module d'authentification de Django (authentification des utilisateurs). Maintenant, je le partage avec vous et le donne comme référence. Jetons un coup d'œil ensemble

Le module d'authentification est une encapsulation de la méthode d'authentification de connexion. Auparavant, après avoir obtenu le nom d'utilisateur et le mot de passe saisis par l'utilisateur, nous devions demander s'il existe. est un utilisateur de la table user. Objets dont les noms et mots de passe correspondent,

Avec le module d'authentification, vous pouvez facilement vérifier si les informations de connexion de l'utilisateur existent dans la base de données.

De plus, auth encapsule également la session pour nous permettre de vérifier si l'utilisateur s'est connecté

Méthodes d'authentification

Si vous souhaitez utiliser la méthode du module auth, vous devez d'abord importer le module auth

from django.contrib import auth
Copier après la connexion

django.contrib.auth propose de nombreuses méthodes, ici nous en présentons principalement quatre :

1, Authenticate()

fournit l'authentification de l'utilisateur, c'est-à-dire pour vérifier si le nom d'utilisateur et le mot de passe sont corrects, généralement le nom d'utilisateur est obligatoire Le mot de passe deux paramètres de mot-clé

Si les informations d'authentification sont valides, un objet Utilisateur sera renvoyé. Authenticate() définira un attribut sur l'objet User pour identifier quel backend d'authentification a authentifié l'utilisateur, et ces informations seront nécessaires dans le processus de connexion ultérieur. Lorsque nous essayons de nous connecter à un objet User provenant directement de la base de données sans authentifier(), une erreur sera signalée ! !

user = authenticate(username='someone',password='somepassword')
Copier après la connexion

2, login(HttpRequest, user)

Cette fonction accepte un objet HttpRequest, et un Objet Utilisateur authentifié

Cette fonction utilise le framework de session de Django pour attacher l'identifiant de session et d'autres informations à un utilisateur authentifié.

from django.contrib.auth import authenticate, login
  
def my_view(request):
  username = request.POST['username']
  password = request.POST['password']
  user = authenticate(username=username, password=password)
  if user is not None:
    login(request, user)
    # Redirect to a success page.
    ...
  else:
    # Return an 'invalid login' error message.
    ...
Copier après la connexion

3. déconnexion (demande) déconnecter l'utilisateur

Cette fonction accepte un objet HttpRequest et ne renvoie rien de valeur. Lorsque cette fonction est appelée, toutes les informations de session pour la requête en cours seront effacées. Même si l'utilisateur n'est pas connecté, aucune erreur ne sera signalée lors de l'utilisation de cette fonction.

from django.contrib.auth import logout
  
def logout_view(request):
  logout(request)
 # Redirect to a success page.
Copier après la connexion

4. is_authenticated() de l'objet utilisateur

Exigences :

1 Les utilisateurs ne peuvent accéder à certaines pages qu'après s'être connectés.

2 Si l'utilisateur accède à la page sans se connecter, il passera directement à la page de connexion

3 Une fois que l'utilisateur a terminé la connexion dans le l'interface de connexion sautée, il accédera automatiquement à l'adresse précédemment visitée

Méthode 1 :

Vérifiez directement à l'aide de la méthode d'authentification is_authenticated()

def my_view(request):
   if not request.user.is_authenticated():
      return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
Copier après la connexion

Méthode 2 :

Vérifiez en fonction de request.user.username S'il est vide, cela signifie que vous n'êtes pas connecté

<. 🎜>
def my_view(request):
   if not request.user.username:
      return redirect(&#39;%s?next=%s&#39; % (settings.LOGIN_URL, request.path))
Copier après la connexion

Méthode 3 :

Django a conçu un décorateur pour cette situation : login_requierd()

from django.contrib.auth.decorators import login_required
   
@login_required
def my_view(request):
 ...
Copier après la connexion

Si l'utilisateur n'est pas connecté, il accédera à l'URL de connexion par défaut de Django '/accounts/login/' (cette valeur peut être modifiée dans le fichier de paramètres via LOGIN_URL). Et transmettez le chemin absolu de l’URL d’accès actuelle (après une connexion réussie, vous serez redirigé vers ce chemin).

objet utilisateur

Attributs de l'objet utilisateur : nom d'utilisateur, mot de passe (obligatoire) le mot de passe est enregistré dans la base de données à l'aide d'un algorithme de hachage

is_staff : indique si l'utilisateur dispose des droits d'administrateur sur le site Web.

is_active : indique si l'utilisateur est autorisé à se connecter, défini sur ``False``, vous pouvez interdire à l'utilisateur de se connecter sans supprimer le user

2.1. is_authenticated()

S'il s'agit d'un véritable objet User, la valeur de retour est toujours True. Utilisé pour vérifier si l'utilisateur a réussi l'authentification.

Réussir l'authentification ne signifie pas que l'utilisateur dispose d'autorisations, ni même vérifier si l'utilisateur est actif. Cela signifie simplement que l'utilisateur a réussi l'authentification. Cette méthode est très importante. Utilisez request.user.is_authenticated() en arrière-plan pour déterminer si l'utilisateur s'est connecté. Si vrai, request.user.name

2.2, créez un utilisateur

Utilisez la fonction auxiliaire create_user pour créer un utilisateur :

from django.contrib.auth.models import User
user = User.objects.create_user(username=&#39;&#39;,password=&#39;&#39;,email=&#39;&#39;)
Copier après la connexion

2.3, check_password(passwd)

user = User.objects.get(username=&#39; &#39;)
if user.check_password(passwd):
  ......
Copier après la connexion

Lorsque l'utilisateur doit modifier le mot de passe, il doit d'abord saisir le mot de passe d'origine. Si la chaîne donnée réussit la vérification du mot de passe, renvoie True<🎜. >

Utilisez set_password() pour changer le mot de passe

user = User.objects.get(username=&#39;&#39;)
user.set_password(password=&#39;&#39;)
user.save 
Copier après la connexion

2.5, exemple simple

Inscription :

def sign_up(request):
 
  state = None
  if request.method == &#39;POST&#39;:
 
    password = request.POST.get(&#39;password&#39;, &#39;&#39;)
    repeat_password = request.POST.get(&#39;repeat_password&#39;, &#39;&#39;)
    email=request.POST.get(&#39;email&#39;, &#39;&#39;)
    username = request.POST.get(&#39;username&#39;, &#39;&#39;)
    if User.objects.filter(username=username):
        state = &#39;user_exist&#39;
    else:
        new_user = User.objects.create_user(username=username, password=password,email=email)
        new_user.save()
 
        return redirect(&#39;/book/&#39;)
  content = {
    &#39;state&#39;: state,
    &#39;user&#39;: None,
  }
  return render(request, &#39;sign_up.html&#39;, content)  
Copier après la connexion

Changer le mot de passe :

@login_required
def set_password(request):
  user = request.user
  state = None
  if request.method == &#39;POST&#39;:
    old_password = request.POST.get(&#39;old_password&#39;, &#39;&#39;)
    new_password = request.POST.get(&#39;new_password&#39;, &#39;&#39;)
    repeat_password = request.POST.get(&#39;repeat_password&#39;, &#39;&#39;)
    if user.check_password(old_password):
      if not new_password:
        state = &#39;empty&#39;
      elif new_password != repeat_password:
        state = &#39;repeat_error&#39;
      else:
        user.set_password(new_password)
        user.save()
        return redirect("/log_in/")
    else:
      state = &#39;password_error&#39;
  content = {
    &#39;user&#39;: user,
    &#39;state&#39;: state,
  }
  return render(request, &#39;set_password.html&#39;, content)
Copier après la connexion

Créer un utilisateur par vous-mêmeIl est à noter que toutes les opérations ci-dessus concernent la table auth_user créée automatiquement par Django. Nous pouvons jeter un œil à la structure de cette table<. 🎜>

Il s'agit d'une table utilisateur créée automatiquement par Django pour nous. Si vous souhaitez utiliser le module auth, vous devez utiliser (ou hériter) de cette table.

继承表的好处是我们可以增加一些自己需要的字段,并且同时可以使用auth模块提供的接口、方法

下面就讲一下继承auth的方法:

1、导入AbstractUser类,并且写一个自定义的类,继承AbstractUser类,如下:

from django.contrib.auth.models import AbstractUser

class UserInfo(AbstractUser):
  """
  用户信息
  """
  nid = models.AutoField(primary_key=True)
  telephone = models.CharField(max_length=11, null=True, unique=True)
  ......
Copier après la connexion

需要注意的是,UserInfo表里就不需要有auth_user里重复的字段了,比如说username以及password等,但是还是可以直接使用这些字段的,并且django会自动将password进行加密

2、这样写完之后,还需要在setting.py文件里配置:

AUTH_USER_MODEL = &#39;blog.UserInfo&#39;
Copier après la connexion

这样,django就知道从blog项目下的models去查找UserInfo这张表了

相关推荐:

Django的cookie使用详解

Django中的Ajax使用方法

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser le compte Xiaohongshu pour trouver des utilisateurs ? Puis-je retrouver mon numéro de téléphone portable ? Comment utiliser le compte Xiaohongshu pour trouver des utilisateurs ? Puis-je retrouver mon numéro de téléphone portable ? Mar 22, 2024 am 08:40 AM

Avec le développement rapide des médias sociaux, Xiaohongshu est devenue l'une des plateformes sociales les plus populaires. Les utilisateurs peuvent créer un compte Xiaohongshu pour montrer leur identité personnelle et communiquer et interagir avec d'autres utilisateurs. Si vous avez besoin de trouver le numéro Xiaohongshu d’un utilisateur, vous pouvez suivre ces étapes simples. 1. Comment utiliser le compte Xiaohongshu pour trouver des utilisateurs ? 1. Ouvrez l'application Xiaohongshu, cliquez sur le bouton « Découvrir » dans le coin inférieur droit, puis sélectionnez l'option « Notes ». 2. Dans la liste des notes, recherchez la note publiée par l'utilisateur que vous souhaitez rechercher. Cliquez pour accéder à la page de détails de la note. 3. Sur la page de détails de la note, cliquez sur le bouton « Suivre » sous l'avatar de l'utilisateur pour accéder à la page d'accueil personnelle de l'utilisateur. 4. Dans le coin supérieur droit de la page d'accueil personnelle de l'utilisateur, cliquez sur le bouton à trois points et sélectionnez « Informations personnelles »

Connectez-vous à Ubuntu en tant que superutilisateur Connectez-vous à Ubuntu en tant que superutilisateur Mar 20, 2024 am 10:55 AM

Dans les systèmes Ubuntu, l'utilisateur root est généralement désactivé. Pour activer l'utilisateur root, vous pouvez utiliser la commande passwd pour définir un mot de passe, puis utiliser la commande su- pour vous connecter en tant que root. L'utilisateur root est un utilisateur disposant de droits d'administration système illimités. Il dispose des autorisations nécessaires pour accéder et modifier les fichiers, la gestion des utilisateurs, l'installation et la suppression de logiciels et les modifications de la configuration du système. Il existe des différences évidentes entre l'utilisateur root et les utilisateurs ordinaires. L'utilisateur root possède la plus haute autorité et des droits de contrôle plus étendus sur le système. L'utilisateur root peut exécuter des commandes système importantes et modifier des fichiers système, ce que les utilisateurs ordinaires ne peuvent pas faire. Dans ce guide, j'explorerai l'utilisateur root Ubuntu, comment se connecter en tant que root et en quoi il diffère d'un utilisateur normal. Avis

Tutoriel : Comment supprimer un compte utilisateur normal dans le système Ubuntu ? Tutoriel : Comment supprimer un compte utilisateur normal dans le système Ubuntu ? Jan 02, 2024 pm 12:34 PM

De nombreux utilisateurs ont été ajoutés au système Ubuntu. Je souhaite supprimer les utilisateurs qui ne sont plus utilisés. Comment les supprimer ? Jetons un coup d'œil au didacticiel détaillé ci-dessous. 1. Ouvrez la ligne de commande du terminal et utilisez la commande userdel pour supprimer l'utilisateur spécifié. Assurez-vous d'ajouter la commande d'autorisation sudo, comme indiqué dans la figure ci-dessous. 2. Lors de la suppression, assurez-vous d'être dans le répertoire des utilisateurs ordinaires. Je n'ai pas cette autorisation, comme le montre la figure ci-dessous. 3. Une fois la commande de suppression exécutée, comment juger si elle a été réellement supprimée ? Ensuite, nous utilisons la commande cat pour ouvrir le fichier passwd, comme le montre la figure ci-dessous 4. Nous voyons que les informations utilisateur supprimées ne sont plus dans le fichier passwd, ce qui prouve que l'utilisateur a été supprimé, comme le montre la figure ci-dessous. 5. Ensuite, nous entrons dans le fichier personnel

Qu'est-ce que sudo et pourquoi est-ce important ? Qu'est-ce que sudo et pourquoi est-ce important ? Feb 21, 2024 pm 07:01 PM

sudo (exécution du superutilisateur) est une commande clé dans les systèmes Linux et Unix qui permet aux utilisateurs ordinaires d'exécuter des commandes spécifiques avec les privilèges root. La fonction de sudo se reflète principalement dans les aspects suivants : Fournir un contrôle des autorisations : sudo réalise un contrôle strict sur les ressources système et les opérations sensibles en autorisant les utilisateurs à obtenir temporairement les autorisations de superutilisateur. Les utilisateurs ordinaires ne peuvent obtenir des privilèges temporaires via sudo qu'en cas de besoin et n'ont pas besoin de se connecter en permanence en tant que superutilisateur. Sécurité améliorée : en utilisant sudo, vous pouvez éviter d'utiliser le compte root lors des opérations de routine. L'utilisation du compte root pour toutes les opérations peut entraîner des dommages inattendus au système, car toute opération incorrecte ou imprudente bénéficiera de toutes les autorisations. et

Django vs Flask : une analyse comparative des frameworks Web Python Django vs Flask : une analyse comparative des frameworks Web Python Jan 19, 2024 am 08:36 AM

Django et Flask sont tous deux leaders dans les frameworks Web Python, et ils ont tous deux leurs propres avantages et scénarios applicables. Cet article procédera à une analyse comparative de ces deux frameworks et fournira des exemples de code spécifiques. Introduction au développement Django est un framework Web complet, son objectif principal est de développer rapidement des applications Web complexes. Django fournit de nombreuses fonctions intégrées, telles que ORM (Object Relational Mapping), formulaires, authentification, backend de gestion, etc. Ces fonctionnalités permettent à Django de gérer de grandes

Avantages et inconvénients du framework Django : tout ce que vous devez savoir Avantages et inconvénients du framework Django : tout ce que vous devez savoir Jan 19, 2024 am 09:09 AM

Django est un framework de développement complet qui couvre tous les aspects du cycle de vie du développement Web. Actuellement, ce framework est l’un des frameworks Web les plus populaires au monde. Si vous envisagez d'utiliser Django pour créer vos propres applications Web, vous devez alors comprendre les avantages et les inconvénients du framework Django. Voici tout ce que vous devez savoir, y compris des exemples de code spécifiques. Avantages de Django : 1. Développement rapide : Djang peut développer rapidement des applications Web. Il fournit une bibliothèque riche et interne

Analyse du mécanisme de stockage des mots de passe utilisateur dans le système Linux Analyse du mécanisme de stockage des mots de passe utilisateur dans le système Linux Mar 20, 2024 pm 04:27 PM

Analyse du mécanisme de stockage du mot de passe utilisateur dans le système Linux Dans le système Linux, le stockage du mot de passe utilisateur est l'un des mécanismes de sécurité très importants. Cet article analysera le mécanisme de stockage des mots de passe des utilisateurs dans les systèmes Linux, y compris le stockage crypté des mots de passe, le processus de vérification des mots de passe et la manière de gérer en toute sécurité les mots de passe des utilisateurs. Dans le même temps, des exemples de code spécifiques seront utilisés pour démontrer le processus opérationnel réel de stockage des mots de passe. 1. Stockage crypté des mots de passe Dans les systèmes Linux, les mots de passe des utilisateurs ne sont pas stockés dans le système en texte brut, mais sont cryptés et stockés. L

Comment mettre à niveau la version de Django : étapes et considérations Comment mettre à niveau la version de Django : étapes et considérations Jan 19, 2024 am 10:16 AM

Comment mettre à niveau la version de Django : étapes et considérations, exemples de code spécifiques requis Introduction : Django est un puissant framework Web Python qui est continuellement mis à jour et mis à niveau pour offrir de meilleures performances et plus de fonctionnalités. Cependant, pour les développeurs utilisant des versions plus anciennes de Django, la mise à niveau de Django peut rencontrer certains défis. Cet article présentera les étapes et les précautions à suivre pour mettre à niveau la version de Django et fournira des exemples de code spécifiques. 1. Sauvegardez les fichiers du projet avant de mettre à niveau Djan

See all articles