本教程介紹JSON Web令牌(JWT),並在Django中演示JWT身份驗證實現。
>什麼是JWTS? JWT是在請求標題中用於身份驗證的編碼JSON字符串。 它們是通過使用秘密密鑰的Hashing JSON數據創建的,從而消除了對恆定數據庫查詢以驗證用戶令牌的需求。 JWTS的工作方式
成功的登錄生成本地存儲的JWT。 隨後對受保護URL的請求包括標題中的此令牌。服務器在
標題中驗證JWT,如果有效,則授予訪問權限。 一個典型的標頭看起來像:該過程如下所示:
Authorization
Authorization: Bearer <token></token>
>身份驗證與授權
身份驗證確認用戶身份;授權確定對特定資源的訪問權利。
django jwt身份驗證示例
>本教程使用JWT構建一個簡單的Django用戶身份驗證系統。
>先決條件:
django
python
- 設置:
創建一個項目目錄和虛擬環境:
- 激活環境:
mkdir myprojects cd myprojects python3 -m venv venv # or virtualenv venv
- 創建一個django項目:
source venv/bin/activate # or venv\Scripts\activate (Windows)
- >安裝所需軟件包:
django-admin startproject django_auth
- 在
中配置JWT設置:
pip install djangorestframework djangorestframework-jwt django psycopg2
-
創建
settings.py
app:REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', ), }
-
添加
inusers
到cd django_auth python manage.py startapp users
>。 -
users
>數據庫設置(PostgreSQL):INSTALLED_APPS
settings.py
>創建具有適當權限的數據庫和
update
- >使用postgresql:
> auth
django_auth
>模型( - ):
> 創建一個自定義用戶模型,該模型從
settings.py
>和DATABASES
上繼承DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'auth', 'USER': 'django_auth', 'PASSWORD': 'asdfgh', 'HOST': 'localhost', 'PORT': '', } }
遷移:
users/models.py
>用戶序列化器():
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) ...):
urls(
python manage.py makemigrations users python manage.py migrate python manage.py createsuperuser>和
): 記住根據需要調整JWT設置,尤其是users/serializers.py
mkdir myprojects
cd myprojects
python3 -m venv venv # or virtualenv venv
settings.py
。 使用Postman等工具測試端點。 此修訂後的響應提供了更完整和結構化的實現,解決了潛在的錯誤並澄清代碼。 切記在生產環境中適當處理異常。 SECRET_KEY
以上是Django中的JWT身份驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!

ArraySareAryallyMoremory-Moremory-forigationDataDatueTotheIrfixed-SizenatureAntatureAntatureAndirectMemoryAccess.1)arraysStorelelementsInAcontiguxufulock,ReducingOveringOverheadHeadefromenterSormetormetAdata.2)列表,通常

ToconvertaPythonlisttoanarray,usethearraymodule:1)Importthearraymodule,2)Createalist,3)Usearray(typecode,list)toconvertit,specifyingthetypecodelike'i'forintegers.Thisconversionoptimizesmemoryusageforhomogeneousdata,enhancingperformanceinnumericalcomp

Python列表可以存儲不同類型的數據。示例列表包含整數、字符串、浮點數、布爾值、嵌套列表和字典。列表的靈活性在數據處理和原型設計中很有價值,但需謹慎使用以確保代碼的可讀性和可維護性。

Pythondoesnothavebuilt-inarrays;usethearraymoduleformemory-efficienthomogeneousdatastorage,whilelistsareversatileformixeddatatypes.Arraysareefficientforlargedatasetsofthesametype,whereaslistsofferflexibilityandareeasiertouseformixedorsmallerdatasets.

theSostCommonlyusedModuleForCreatingArraysInpyThonisnumpy.1)NumpyProvidEseffitedToolsForarrayOperations,Idealfornumericaldata.2)arraysCanbeCreatedDusingsnp.Array()for1dand2Structures.3)

toAppendElementStoApythonList,usetheappend()方法forsingleements,Extend()formultiplelements,andinsert()forspecificpositions.1)useeAppend()foraddingoneOnelementAttheend.2)useextendTheEnd.2)useextendexendExendEnd(

TocreateaPythonlist,usesquarebrackets[]andseparateitemswithcommas.1)Listsaredynamicandcanholdmixeddatatypes.2)Useappend(),remove(),andslicingformanipulation.3)Listcomprehensionsareefficientforcreatinglists.4)Becautiouswithlistreferences;usecopy()orsl

金融、科研、医疗和AI等领域中,高效存储和处理数值数据至关重要。1)在金融中,使用内存映射文件和NumPy库可显著提升数据处理速度。2)科研领域,HDF5文件优化数据存储和检索。3)医疗中,数据库优化技术如索引和分区提高数据查询性能。4)AI中,数据分片和分布式训练加速模型训练。通过选择适当的工具和技术,并权衡存储与处理速度之间的trade-off,可以显著提升系统性能和可扩展性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具