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
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 à ...
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?
"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.
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
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