DjangoのJWT認証

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-03-02 09:27:13
オリジナル
760 人が閲覧しました

このチュートリアルでは、JSON Web Tokens(JWT)を紹介し、DjangoでJWT認証実装を実証しています。

jwtsとは何ですか?

JWTは、認証用の要求ヘッダーで使用されるエンコードされたJSON文字列です。 それらは、secretキーを使用してJSONデータをハッシュすることによって作成され、ユーザートークンを確認するために一定のデータベースクエリの必要性を排除します。

どのようにJWTが機能するか成功したログインは、ローカルに保存されたJWTを生成します。 保護されたURLへのその後のリクエストには、ヘッダーのこのトークンが含まれます。サーバーは、

ヘッダーのJWTを検証し、有効な場合にアクセスを許可します。 典型的なヘッダーは次のようになります:

プロセスを以下に示します:

Authorization Authorization: Bearer <token></token>

認証対承認

JWT Authentication in Django

認証はユーザーのIDを確認します。承認は、特定のリソースへのアクセス権を決定します

django jwt認証の例

このチュートリアルは、JWTを使用してシンプルなDjangoユーザー認証システムを構築します。

前提条件:

django

python

    セットアップ:
プロジェクトディレクトリと仮想環境を作成します:

    環境をアクティブにします:
  1. mkdir myprojects
    cd myprojects
    python3 -m venv venv  # or virtualenv venv
    ログイン後にコピー
    ログイン後にコピー
  2. djangoプロジェクトを作成:
  3. source venv/bin/activate  # or venv\Scripts\activate (Windows)
    ログイン後にコピー
  4. 必要なパッケージをインストールする:
  5. django-admin startproject django_auth
    ログイン後にコピー
  6. でJWT設定を設定します

    pip install djangorestframework djangorestframework-jwt django psycopg2
    ログイン後にコピー
  7. App:

    を作成します settings.py

    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': (
            'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        ),
    }
    ログイン後にコピー
  8. in

    users

    cd django_auth
    python manage.py startapp users
    ログイン後にコピー
  9. データベースのセットアップ(postgreSQL):
  10. users INSTALLED_APPS settings.py適切なアクセス許可を持つ

    データベースと
  11. ユーザーを作成します(「ASDFGH」を強力なパスワードで置き換えます)。 詳細な手順については、postgreSQLドキュメントを参照してください

update postgreSQL:

を使用します
  1. authdjango_authモデル(

    ):
  2. settings.pyおよびDATABASES

    から継承するカスタムユーザーモデルを作成します
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'auth',
            'USER': 'django_auth',
            'PASSWORD': 'asdfgh',
            'HOST': 'localhost',
            'PORT': '',
        }
    }
    ログイン後にコピー
移行:

users/models.py

ユーザーSerializers():

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) ...
ログイン後にコピー
ユーザービュー(

):

python manage.py makemigrations users
python manage.py migrate
python manage.py createsuperuser
ログイン後にコピー

urls(andusers/serializers.py):

mkdir myprojects
cd myprojects
python3 -m venv venv  # or virtualenv venv
ログイン後にコピー
ログイン後にコピー

必要に応じて、settings.py、特にSECRET_KEYでJWT設定を調整することを忘れないでください。 Postmanなどのツールを使用してエンドポイントをテストします。 この改訂された応答は、より完全で構造化された実装を提供し、潜在的なエラーに対処し、コードを明確にします。 生産環境で例外を適切に処理することを忘れないでください

以上がDjangoのJWT認証の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート