認証の準備
パッケージのインストール
(recsys_full) backend$
pip install djangorestframework
pip install django-filter
pip install djangorestframework-simplejwt
(recsys_full) backend$ pip freeze
...(略)...
django-filter==26.1
djangorestframework==3.18.0
djangorestframework_simplejwt==5.5.1
...(略)...
設定ファイル
src/backend/config/settings/base.py
...(略)...
import os
from pathlib import Path
from datetime import timedelta # <- 追加
...(略)...
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.postgres',
'api.online.apps.OnlineConfig',
'api.accounts.apps.AccountsConfig',
'rest_framework', # <- 追加
'django_filters', # <- 追加
]
...(略)...
AUTH_USER_MODEL = 'accounts.CustomUser'
# ↓追加
REST_FRAMEWORK = {
"DEFAULT_AUTHENTICATION_CLASSES": (
"rest_framework_simplejwt.authentication.JWTAuthentication",
),
"DEFAULT_PERMISSION_CLASSES": (
"rest_framework.permissions.IsAuthenticated",
),
}
SIMPLE_JWT = {
"ACCESS_TOKEN_LIFETIME": timedelta(minutes=60),
"REFRESH_TOKEN_LIFETIME": timedelta(days=7),
"AUTH_HEADER_TYPES": ("Bearer",),
"SIGNING_KEY": os.environ.get("JWT_SIGNING_KEY", SECRET_KEY),
}
# ↑追加
src/backend/config/settings/development.py
...(略)...
if not SECRET_KEY:
SECRET_KEY = 'django-insecure-local-dev-only-do-not-use-in-production'
SIMPLE_JWT = {**SIMPLE_JWT, 'SIGNING_KEY': os.environ.get('JWT_SIGNING_KEY', SECRET_KEY)} # <- 追加
...(略)...