首頁 > 後端開發 > Python教學 > Django中的JWT身份驗證

Django中的JWT身份驗證

尊渡假赌尊渡假赌尊渡假赌
發布: 2025-03-02 09:27:13
原創
752 人瀏覽過

本教程介紹JSON Web令牌(JWT),並在Django中演示JWT身份驗證實現。

>什麼是JWTS? JWT是在請求標題中用於身份驗證的編碼JSON字符串。 它們是通過使用秘密密鑰的Hashing JSON數據創建的,從而消除了對恆定數據庫查詢以驗證用戶令牌的需求。 JWTS的工作方式

成功的登錄生成本地存儲的JWT。 隨後對受保護URL的請求包括標題中的此令牌。服務器在

標題中驗證JWT,如果有效,則授予訪問權限。 一個典型的標頭看起來像:

該過程如下所示:

Authorization Authorization: Bearer <token></token>

>身份驗證與授權

JWT Authentication in Django 身份驗證確認用戶身份;授權確定對特定資源的訪問權利。

>

django jwt身份驗證示例

>

本教程使用JWT構建一個簡單的Django用戶身份驗證系統。

>先決條件:

django

python

  • 設置:

創建一個項目目錄和虛擬環境:

  1. 激活環境:

    mkdir myprojects
    cd myprojects
    python3 -m venv venv  # or virtualenv venv
    登入後複製
    登入後複製
  2. 創建一個django項目:

    source venv/bin/activate  # or venv\Scripts\activate (Windows)
    登入後複製
  3. >安裝所需軟件包:

    django-admin startproject django_auth
    登入後複製
  4. 中配置JWT設置:

    pip install djangorestframework djangorestframework-jwt django psycopg2
    登入後複製
  5. 創建settings.pyapp:

    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': (
            'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        ),
    }
    登入後複製
  6. 添加users

    in
    cd django_auth
    python manage.py startapp users
    登入後複製
    >。
  7. users>數據庫設置(PostgreSQL): INSTALLED_APPS settings.py

  8. >創建具有適當權限的數據庫和
用戶(用強密碼替換'asdfgh')。 請諮詢PostgreSQL文檔以獲取詳細說明。

update
  1. >使用postgresql:>

    auth django_auth

  2. >模型(
  3. ):>

    創建一個自定義用戶模型,該模型從settings.py>和DATABASES上繼承

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'auth',
            'USER': 'django_auth',
            'PASSWORD': 'asdfgh',
            'HOST': 'localhost',
            'PORT': '',
        }
    }
    登入後複製
  4. 遷移:

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
登入後複製
>和

):users/serializers.py

mkdir myprojects
cd myprojects
python3 -m venv venv  # or virtualenv venv
登入後複製
登入後複製

記住根據需要調整JWT設置,尤其是settings.py。 使用Postman等工具測試端點。 此修訂後的響應提供了更完整和結構化的實現,解決了潛在的錯誤並澄清代碼。 切記在生產環境中適當處理異常。 SECRET_KEY

以上是Django中的JWT身份驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板