[PYTHON] Implémentation de la fonction d'authentification JWT dans Django REST Framework à l'aide de djoser

Qu'est-ce que Djoser

djoser est une bibliothèque qui prend en charge l'authentification et l'enregistrement des utilisateurs de base sur le Django REST Framework. Il peut également être utilisé pour des modèles personnalisés et est conçu pour une architecture qui s'adapte mieux à l'application à page unique (SPA) plutôt que de réutiliser le code Django.

Les paramètres d'authentification plus simples sont expliqués à ici.

Cette fois, j'écrirai sur l'implémentation de la fonction d'authentification en utilisant JWT (JSON Web Token) avec djoser.

Le code source est ici

De plus, tous les éléments suivants peuvent être utilisés comme points de terminaison après l'installation.

/users/ /users/me/ /users/confirm/ /users/resend_activation/ /users/set_password/ /users/reset_password/ /users/reset_password_confirm/ /users/set_username/ /users/reset_username/ /users/reset_username_confirm/ /token/login/ (Token Based Authentication) /token/logout/ (Token Based Authentication) /jwt/create/ (JSON Web Token Authentication) /jwt/refresh/ (JSON Web Token Authentication) /jwt/verify/ (JSON Web Token Authentication) Getting started

Comment utiliser

D'abord de l'installation.

$ pip install -U djoser

Puisque l'authentification JWT est utilisée, simple_jwt doit également être utilisé.

$ pip install -U djangorestframework_simplejwt

Tout d'abord, faites un projet

$ django-admin startproject djoser_authentication

Allez dans le projet.

$ cd djoser_authentication

Nous allons mettre en place Django.

setings.py



from datetime import timedelta # add

   .........

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework', # add
    'djoser' # add

]

# add
SIMPLE_JWT = {
    #Définir le jeton sur JWT
    'AUTH_HEADER_TYPES':('JWT'),
    #Définition de la durée du jeton
    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=60)
}

# add
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),
}

urls.py


from django.contrib import admin
from django.urls import path,include #add

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/auth/',include('djoser.urls')), #add
    path('api/auth/',include('djoser.urls.jwt')), #add
]

Seulement ça.

Après cela, migrez, créez un utilisateur Admin et lancez-le localement.

$ python manage.py migrations
$ python manage.py createsuperuser
Username: Admin
Email address: [email protected]
Password:*********** 
$ python manage.py runserver

Et dans le navigateur http://localhost:8000/api/auth/ Lorsque vous accédez à ...

スクリーンショット 2020-04-19 21.14.38.png

C'est l'écran habituel du Django REST Framework.

La dernière fois, lorsque j'ai accédé aux utilisateurs après cela, une liste d'informations sur les utilisateurs a été renvoyée, mais qu'en est-il de cette fois?

スクリーンショット 2020-04-19 21.22.58.png

    "detail": "Authentication credentials were not provided.

Est affiché. Je ne peux pas le montrer car je ne suis pas qualifié pour la certification! !! à propos de ça.

Alors, comment obtenez-vous des informations sur les utilisateurs? Pour ce faire, vous devez obtenir un jeton pour l'authentification.

Alors pour obtenir le jeton http://localhost:8000/api/auth/jwt/create Accéder.

スクリーンショット 2020-04-19 21.29.26.png

Ensuite, l'écran ci-dessus apparaîtra, alors entrez le nom d'utilisateur et le mot de passe que vous avez enregistrés précédemment.

Puis

スクリーンショット 2020-04-19 21.27.19.png

Les jetons divisés en champs de réfraction et d'accès comme indiqué ci-dessus sont affichés.

Utilisons ceci pour obtenir des informations utilisateur sur le terminal. Exécutez la commande suivante dans le terminal.

curl -LX GET http://127.0.0.1:8000/api/auth/users/me/ -H 'Authorization: JWT xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

(Entrez le jeton dans xxxx)

Puis

{"email":"[email protected]","id":1,"username":"Admin"}

Les informations utilisateur que vous avez enregistrées précédemment ont été renvoyées!

Il existe diverses autres fonctions dans djoser, veuillez donc les utiliser!

Recommended Posts

Implémentation de la fonction d'authentification JWT dans Django REST Framework à l'aide de djoser
Implémentation de la fonction d'authentification du modèle utilisateur personnalisé dans Django REST Framework à l'aide de djoser
Implémenter la fonctionnalité de connexion JWT dans le framework Django REST
Implémentation de la fonction d'authentification dans Django REST Framework à l'aide de djoser
Implémentation de CRUD à l'aide de l'API REST avec Python + Django Rest framework + igGrid
Implémentation de la fonction de connexion dans Django
Comprendre la commodité de Django Rest Framework
Développement et déploiement de l'API REST en Python à l'aide de Falcon Web Framework
Comment gérer les caractères déformés dans json de Django REST Framework
Plus de nouvelles méthodes d'authentification des utilisateurs avec Django REST Framework
Créer une API autour de l'authentification des utilisateurs avec Django REST Framework
List, méthode pour les ressources imbriquées dans le framework Django REST
Implémentez l'API à une vitesse explosive en utilisant Django REST Framework
Bases du framework Django REST
[Django Rest Framework] Personnalisez la fonction de filtre à l'aide de Django-Filter
Astuces Django Rest Framework
Implémenter des URL hiérarchiques avec des routeurs imbriqués drf dans le framework Django REST
Création d'une API qui renvoie des résultats d'inférence négatifs-positifs à l'aide de BERT dans le framework Django REST
Comment écrire une validation personnalisée dans Django REST Framework
Comment réinitialiser le mot de passe via l'API à l'aide du framework Rest Django
Implémenter la fonction de suivi dans Django
Implémentation de TF-IDF à l'aide de gensim
Bloc d'achoppement du framework Django REST
Implémentation du tri rapide en Python
Framework Django REST avec Vue.js
Connectez-vous avec Django Rest Framework
Implémentation du jeu de vie en Python
Implémentation des notifications de bureau à l'aide de Python
Installer le framework Python django à l'aide de pip
Implémentation du tri original en Python
[Django] Utiliser MessagePack avec le framework Django REST
Déployez Django en 3 minutes à l'aide de docker-compose
Implémentation du bouton like dans Django + Ajax