[PYTHON] Implementierung der JWT-Authentifizierungsfunktion in Django REST Framework mit djoser

Was ist Djoser?

djoser ist eine Bibliothek, die die grundlegende Benutzerauthentifizierung und -registrierung im Django REST Framework unterstützt. Es kann auch für benutzerdefinierte Modelle verwendet werden und ist für eine Architektur konzipiert, die besser zur Single Page Application (SPA) passt, anstatt den Code von Django wiederzuverwenden.

Einfachere Authentifizierungseinstellungen werden unter hier erläutert.

Dieses Mal werde ich über die Implementierung der Authentifizierungsfunktion mit JWT (JSON Web Token) mit djoser schreiben.

Der Quellcode lautet hier

Darüber hinaus können alle folgenden Elemente nach der Installation als Endpunkte verwendet werden.

/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

Wie benutzt man

Zuerst von der Installation.

$ pip install -U djoser

Da die JWT-Authentifizierung verwendet wird, muss auch simple_jwt verwendet werden.

$ pip install -U djangorestframework_simplejwt

Machen Sie zuerst ein Projekt

$ django-admin startproject djoser_authentication

Gehen Sie in das Projekt.

$ cd djoser_authentication

Wir werden Django gründen.

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 = {
    #Setzen Sie das Token auf JWT
    'AUTH_HEADER_TYPES':('JWT'),
    #Festlegen der Dauer des Tokens
    '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
]

Nur das.

Migrieren Sie anschließend, erstellen Sie einen Administrator und starten Sie ihn lokal.

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

Und im Browser http://localhost:8000/api/auth/ Wenn Sie zugreifen ...

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

Es ist der übliche Django REST Framework-Bildschirm.

Als ich das letzte Mal danach auf Benutzer zugegriffen habe, wurde eine Liste mit Benutzerinformationen zurückgegeben, aber was ist mit dieser Zeit?

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

    "detail": "Authentication credentials were not provided.

Wird angezeigt. Ich kann das nicht zeigen, weil ich nicht für die Zertifizierung qualifiziert bin! !! darüber.

Wie erhalten Sie Benutzerinformationen? Dazu benötigen Sie ein Token zur Authentifizierung.

Also, um den Token zu bekommen http://localhost:8000/api/auth/jwt/create Zugreifen.

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

Anschließend wird der obige Bildschirm angezeigt. Geben Sie daher den zuvor registrierten Benutzernamen und das Kennwort ein.

Dann

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

Die Token, die wie oben gezeigt in die Felder "Auffrischen" und "Zugriff" unterteilt sind, werden angezeigt.

Verwenden Sie dies, um Benutzerinformationen zum Terminal abzurufen. Führen Sie den folgenden Befehl im Terminal aus.

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

(Geben Sie den Token in xxxx ein.)

Dann

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

Die zuvor registrierten Benutzerinformationen wurden zurückgegeben!

Es gibt verschiedene andere Funktionen in djoser, also benutze sie bitte!

Recommended Posts

Implementierung der JWT-Authentifizierungsfunktion in Django REST Framework mit djoser
Implementierung der benutzerdefinierten Authentifizierungsfunktion für Benutzermodelle in Django REST Framework mit djoser
Implementieren Sie die JWT-Anmeldefunktion im Django REST-Framework
Implementierung der Authentifizierungsfunktion in Django REST Framework mit djoser
Implementierung von CRUD mithilfe der REST-API mit Python + Django Rest Framework + igGrid
Implementierung der Login-Funktion in Django
Verstehen Sie den Komfort des Django Rest Framework
Entwicklung und Bereitstellung der REST-API in Python mit Falcon Web Framework
Wie man mit verstümmelten Charakteren in json von Django REST Framework umgeht
Weitere neue Benutzerauthentifizierungsmethoden mit Django REST Framework
Erstellen Sie eine API für die Benutzerauthentifizierung mit Django REST Framework
Listenmethode für verschachtelte Ressourcen im Django REST-Framework
Implementieren Sie die API mit explosiver Geschwindigkeit mithilfe des Django REST Framework
Grundlagen des Django REST-Frameworks
[Django Rest Framework] Passen Sie die Filterfunktion mit Django-Filter an
Tipps zum Django Rest Framework
Implementieren Sie hierarchische URLs mit drf-verschachtelten Routern im Django REST-Framework
Erstellen einer API, die mit BERT im Django REST-Framework negativ-positive Inferenzergebnisse zurückgibt
So schreiben Sie eine benutzerdefinierte Validierung in Django REST Framework
Zurücksetzen des Passworts über die API mit dem Django Rest Framework
Implementieren Sie die Follow-Funktion in Django
Implementierung von TF-IDF mit Gensim
Django REST Framework Stolperstein
Implementierung der schnellen Sortierung in Python
Django REST Framework mit Vue.js
Melden Sie sich mit dem Django Rest Framework an
Implementierung eines Lebensspiels in Python
Implementierung von Desktop-Benachrichtigungen mit Python
Installieren Sie das Python Framework Django mit pip
Implementierung der ursprünglichen Sortierung in Python
[Django] Verwenden Sie MessagePack mit dem Django REST-Framework
Stellen Sie Django in 3 Minuten mit Docker-Compose bereit
Implementierung der Like-Schaltfläche in Django + Ajax