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
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 ...
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?
"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.
Anschließend wird der obige Bildschirm angezeigt. Geben Sie daher den zuvor registrierten Benutzernamen und das Kennwort ein.
Dann
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