JWT -Authentifizierung in Django
Dieses Tutorial führt JSON Web Tokens (JWT) vor und zeigt die Implementierung der JWT -Authentifizierung in Django.
Was sind jwts?
JWTs sind codierte JSON -Zeichenfolgen, die für die Authentifizierung in Anforderungsheadern verwendet werden. Sie werden von Hashing -JSON -Daten mit einem geheimen Schlüssel erstellt, wodurch die Notwendigkeit konstanter Datenbankabfragen erforderlich ist, um Benutzer -Token zu überprüfen.
Wie JWTs
funktioniert erfolgreiche Anmeldungen erzeugen eine JWT, die lokal gespeichert ist. Nachfolgende Anfragen an geschützte URLs enthalten dieses Token in den Header. Der Server überprüft den JWT im Authorization
-Header und gewährt den Zugriff, falls dies gültig ist. Ein typischer Header sieht aus wie: Authorization: Bearer <token></token>
Der Prozess ist unten dargestellt:
Authentifizierung vs. Autorisierung
Authentifizierung bestätigt die Benutzeridentität. Die Autorisierung bestimmt Zugriffsrechte für bestimmte Ressourcen.
django jwt Authentifizierung Beispiel
Dieses Tutorial erstellt ein einfaches Django -Benutzerauthentifizierungssystem mit JWT.
Voraussetzungen:
- django
- python
Setup:
-
Erstellen Sie ein Projektverzeichnis und eine virtuelle Umgebung:
mkdir myprojects cd myprojects python3 -m venv venv # or virtualenv venv
Nach dem Login kopierenNach dem Login kopieren -
Aktivieren Sie die Umgebung:
source venv/bin/activate # or venv\Scripts\activate (Windows)
Nach dem Login kopieren -
Erstellen Sie ein Django -Projekt:
django-admin startproject django_auth
Nach dem Login kopieren -
Erforderliche Pakete installieren:
pip install djangorestframework djangorestframework-jwt django psycopg2
Nach dem Login kopieren -
Konfigurieren Sie die JWT -Einstellungen in
settings.py
:REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', ), }
Nach dem Login kopieren -
Erstellen Sie eine
users
App:cd django_auth python manage.py startapp users
Nach dem Login kopieren -
add
hinzufügenusers
zuINSTALLED_APPS
insettings.py
.
Datenbank -Setup (postgresql):
-
Erstellen Sie die
auth
-Datenbank und einendjango_auth
Benutzer mit entsprechenden Berechtigungen (ersetzen Sie 'ASDFGH' durch ein starkes Kennwort). In der PostgreSQL -Dokumentation finden Sie detaillierte Anweisungen. -
update
settings.py
DATABASES
, um PostgreSQL zu verwenden:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'auth', 'USER': 'django_auth', 'PASSWORD': 'asdfgh', 'HOST': 'localhost', 'PORT': '', } }
Nach dem Login kopieren
Modelle (users/models.py
):
Erstellen Sie ein benutzerdefiniertes Benutzermodell, das von AbstractBaseUser
und PermissionsMixin
:
from django.db import models from django.utils import timezone from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager from django.db import transaction class UserManager(BaseUserManager): # ... (UserManager methods as in original example) ... class User(AbstractBaseUser, PermissionsMixin): # ... (User model fields as in original example) ... objects = UserManager() USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['first_name', 'last_name'] # ... (save method as in original example) ...
Migrationen:
python manage.py makemigrations users python manage.py migrate python manage.py createsuperuser
Benutzerserializer (users/serializers.py
):
from rest_framework import serializers from .models import User class UserSerializer(serializers.ModelSerializer): date_joined = serializers.ReadOnlyField() class Meta: model = User fields = ('id', 'email', 'first_name', 'last_name', 'date_joined', 'password') extra_kwargs = {'password': {'write_only': True}}
Benutzeransichten (users/views.py
):
from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.generics import RetrieveUpdateAPIView from rest_framework_jwt.settings import api_settings from .serializers import UserSerializer from .models import User from django.conf import settings import jwt from rest_framework.decorators import api_view, permission_classes from django.dispatch import Signal jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER user_logged_in = Signal() class CreateUserAPIView(APIView): permission_classes = (AllowAny,) def post(self, request): user = request.data serializer = UserSerializer(data=user) serializer.is_valid(raise_exception=True) serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) class UserRetrieveUpdateAPIView(RetrieveUpdateAPIView): permission_classes = (IsAuthenticated,) serializer_class = UserSerializer def get(self, request, *args, **kwargs): serializer = self.serializer_class(request.user) return Response(serializer.data, status=status.HTTP_200_OK) def put(self, request, *args, **kwargs): serializer_data = request.data.get('user', {}) serializer = UserSerializer(request.user, data=serializer_data, partial=True) serializer.is_valid(raise_exception=True) serializer.save() return Response(serializer.data, status=status.HTTP_200_OK) @api_view(['POST']) @permission_classes([AllowAny, ]) def authenticate_user(request): # ... (authentication logic as in original example) ...
URLs (users/urls.py
und django_auth/urls.py
):
mkdir myprojects cd myprojects python3 -m venv venv # or virtualenv venv
Denken Sie daran, die JWT -Einstellungen nach Bedarf in settings.py
anzupassen, insbesondere SECRET_KEY
. Testen Sie die Endpunkte mit Tools wie Postman. Diese überarbeitete Antwort bietet eine vollständigere und strukturierte Implementierung, die potenzielle Fehler behandelt und den Code klärt. Denken Sie daran, in einer Produktionsumgebung angemessene Ausnahmen zu bewältigen.
Das obige ist der detaillierte Inhalt vonJWT -Authentifizierung in Django. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Python ist leichter zu lernen und zu verwenden, während C leistungsfähiger, aber komplexer ist. 1. Python -Syntax ist prägnant und für Anfänger geeignet. Durch die dynamische Tippen und die automatische Speicherverwaltung können Sie die Verwendung einfach zu verwenden, kann jedoch zur Laufzeitfehler führen. 2.C bietet Steuerung und erweiterte Funktionen auf niedrigem Niveau, geeignet für Hochleistungsanwendungen, hat jedoch einen hohen Lernschwellenwert und erfordert manuellem Speicher und Typensicherheitsmanagement.

Ist es genug, um Python für zwei Stunden am Tag zu lernen? Es hängt von Ihren Zielen und Lernmethoden ab. 1) Entwickeln Sie einen klaren Lernplan, 2) Wählen Sie geeignete Lernressourcen und -methoden aus, 3) praktizieren und prüfen und konsolidieren Sie praktische Praxis und Überprüfung und konsolidieren Sie und Sie können die Grundkenntnisse und die erweiterten Funktionen von Python während dieser Zeit nach und nach beherrschen.

Python ist in der Entwicklungseffizienz besser als C, aber C ist in der Ausführungsleistung höher. 1. Pythons prägnante Syntax und reiche Bibliotheken verbessern die Entwicklungseffizienz. 2. Die Kompilierungsmerkmale von Compilation und die Hardwarekontrolle verbessern die Ausführungsleistung. Bei einer Auswahl müssen Sie die Entwicklungsgeschwindigkeit und die Ausführungseffizienz basierend auf den Projektanforderungen abwägen.

Python und C haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1) Python ist aufgrund seiner prägnanten Syntax und der dynamischen Typisierung für die schnelle Entwicklung und Datenverarbeitung geeignet. 2) C ist aufgrund seiner statischen Tipp- und manuellen Speicherverwaltung für hohe Leistung und Systemprogrammierung geeignet.

PythonlistsarePartThestandardlibrary, whilearraysarenot.listarebuilt-in, vielseitig und UNDUSEDFORSPORINGECollections, während dieArrayRay-thearrayModulei und loses und loses und losesaluseduetolimitedFunctionality.

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Zu den Anwendungen von Python im wissenschaftlichen Computer gehören Datenanalyse, maschinelles Lernen, numerische Simulation und Visualisierung. 1.Numpy bietet effiziente mehrdimensionale Arrays und mathematische Funktionen. 2. Scipy erweitert die Numpy -Funktionalität und bietet Optimierungs- und lineare Algebra -Tools. 3.. Pandas wird zur Datenverarbeitung und -analyse verwendet. 4.Matplotlib wird verwendet, um verschiedene Grafiken und visuelle Ergebnisse zu erzeugen.

Zu den wichtigsten Anwendungen von Python in der Webentwicklung gehören die Verwendung von Django- und Flask -Frameworks, API -Entwicklung, Datenanalyse und Visualisierung, maschinelles Lernen und KI sowie Leistungsoptimierung. 1. Django und Flask Framework: Django eignet sich für die schnelle Entwicklung komplexer Anwendungen, und Flask eignet sich für kleine oder hochmobile Projekte. 2. API -Entwicklung: Verwenden Sie Flask oder Djangorestframework, um RESTFUFFUPI zu erstellen. 3. Datenanalyse und Visualisierung: Verwenden Sie Python, um Daten zu verarbeiten und über die Webschnittstelle anzuzeigen. 4. Maschinelles Lernen und KI: Python wird verwendet, um intelligente Webanwendungen zu erstellen. 5. Leistungsoptimierung: optimiert durch asynchrones Programmieren, Caching und Code
