Tutorial ini memperkenalkan Token Web JSON (JWT) dan menunjukkan pelaksanaan pengesahan JWT di Django.
Apa itu JWTS?
Bagaimana JWTS berfungsi
Log masuk yang berjaya menghasilkan JWT yang disimpan di dalam negara. Permintaan seterusnya untuk URL yang dilindungi termasuk token ini dalam tajuk. Pelayan mengesahkan JWT dalam header, memberikan akses jika sah. Header biasa kelihatan seperti: Authorization
Authorization: Bearer <token></token>
Pengesahan mengesahkan identiti pengguna; Kebenaran menentukan hak akses kepada sumber tertentu.
Django JWT Contoh Pengesahan
tutorial ini membina sistem pengesahan pengguna Django yang mudah menggunakan JWT.
Prasyarat:
django
- python
- Buat direktori projek dan persekitaran maya:
-
mkdir myprojects cd myprojects python3 -m venv venv # or virtualenv venv
mengaktifkan persekitaran: -
source venv/bin/activate # or venv\Scripts\activate (Windows)
Buat projek Django: -
django-admin startproject django_auth
Pasang pakej yang diperlukan: -
pip install djangorestframework djangorestframework-jwt django psycopg2
Konfigurasi tetapan JWT dalam - :
settings.py
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', ), }
Buat aplikasi - :
users
cd django_auth python manage.py startapp users
tambah - ke
dalam
users
.INSTALLED_APPS
settings.py
- Buat pangkalan data
- dan pengguna
dengan keizinan yang sesuai (ganti 'ASDFGH' dengan kata laluan yang kuat). Rujuk dokumentasi PostgreSQL untuk arahan terperinci.
auth
django_auth
kemas kini -
untuk menggunakan PostgreSQL:
settings.py
DATABASES
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'auth', 'USER': 'django_auth', 'PASSWORD': 'asdfgh', 'HOST': 'localhost', 'PORT': '', } }
): users/models.py
Buat model pengguna tersuai yang mewarisi dari
: AbstractBaseUser
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) ...Migrasi:
python manage.py makemigrations users python manage.py migrate python manage.py createsuperuserSerializers Pengguna (
): 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}}Pandangan Pengguna (
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) ...dan
): ingat untuk menyesuaikan tetapan JWT dalam users/urls.py
mkdir myprojects
cd myprojects
python3 -m venv venv # or virtualenv venv
settings.py
seperti yang diperlukan, terutama SECRET_KEY
. Uji titik akhir menggunakan alat seperti Postman. Tanggapan yang disemak ini memberikan pelaksanaan yang lebih lengkap dan berstruktur, menangani kesilapan yang berpotensi dan menjelaskan kod tersebut. Ingatlah untuk mengendalikan pengecualian dengan sewajarnya dalam persekitaran pengeluaran.
Atas ialah kandungan terperinci Pengesahan JWT di Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Artikel ini menerangkan cara menggunakan sup yang indah, perpustakaan python, untuk menghuraikan html. Ia memperincikan kaedah biasa seperti mencari (), find_all (), pilih (), dan get_text () untuk pengekstrakan data, pengendalian struktur dan kesilapan HTML yang pelbagai, dan alternatif (sel

Artikel ini membandingkan tensorflow dan pytorch untuk pembelajaran mendalam. Ia memperincikan langkah -langkah yang terlibat: penyediaan data, bangunan model, latihan, penilaian, dan penempatan. Perbezaan utama antara rangka kerja, terutamanya mengenai grap pengiraan

Modul Statistik Python menyediakan keupayaan analisis statistik data yang kuat untuk membantu kami dengan cepat memahami ciri -ciri keseluruhan data, seperti biostatistik dan analisis perniagaan. Daripada melihat titik data satu demi satu, cuma melihat statistik seperti min atau varians untuk menemui trend dan ciri dalam data asal yang mungkin diabaikan, dan membandingkan dataset besar dengan lebih mudah dan berkesan. Tutorial ini akan menjelaskan cara mengira min dan mengukur tahap penyebaran dataset. Kecuali dinyatakan sebaliknya, semua fungsi dalam modul ini menyokong pengiraan fungsi min () dan bukan hanya menjumlahkan purata. Nombor titik terapung juga boleh digunakan. Import secara rawak Statistik import dari fracti

Artikel ini membincangkan perpustakaan Python yang popular seperti Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask, dan Permintaan, memperincikan kegunaan mereka dalam pengkomputeran saintifik, analisis data, visualisasi, pembelajaran mesin, pembangunan web, dan h

Artikel ini membimbing pemaju Python mengenai bangunan baris baris komando (CLI). Butirannya menggunakan perpustakaan seperti Typer, Klik, dan ArgParse, menekankan pengendalian input/output, dan mempromosikan corak reka bentuk mesra pengguna untuk kebolehgunaan CLI yang lebih baik.

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Artikel ini membincangkan peranan persekitaran maya di Python, memberi tumpuan kepada menguruskan kebergantungan projek dan mengelakkan konflik. Ia memperincikan penciptaan, pengaktifan, dan faedah mereka dalam meningkatkan pengurusan projek dan mengurangkan isu pergantungan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

Dreamweaver CS6
Alat pembangunan web visual

Dreamweaver Mac版
Alat pembangunan web visual

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.