ホームページ >バックエンド開発 >Python チュートリアル >DjangoのJWT認証
このチュートリアルでは、JSON Web Tokens(JWT)を紹介し、DjangoでJWT認証実装を実証しています。
jwtsとは何ですか?JWTは、認証用の要求ヘッダーで使用されるエンコードされたJSON文字列です。 それらは、secretキーを使用してJSONデータをハッシュすることによって作成され、ユーザートークンを確認するために一定のデータベースクエリの必要性を排除します。
どのようにJWTが機能するか成功したログインは、ローカルに保存された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
source venv/bin/activate # or venv\Scripts\activate (Windows)
django-admin startproject django_auth
でJWT設定を設定します
pip install djangorestframework djangorestframework-jwt django psycopg2
を作成します
settings.py
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', ), }
users
cd django_auth python manage.py startapp users
users
INSTALLED_APPS
settings.py
適切なアクセス許可を持つ
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) ...ユーザービュー(
):
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 サイトの他の関連記事を参照してください。