Для настройки аутентификации для Django Admin через JSON Web Tokens (JWT) вам потребуется несколько шагов. Вот подробный план действий:
Шаг 1: Установите необходимые пакеты
Установите два пакета: djangorestframework и djangorestframework-jwt. Вы можете установить их при помощи pip, выполнив команду:
pip install djangorestframework djangorestframework-jwt
Шаг 2: Настройте DRF в вашем проекте
Добавьте 'rest_framework' в список установленных приложений ('INSTALLED_APPS') в файле настроек вашего проекта (settings.py).
INSTALLED_APPS = [ ... 'rest_framework', ... ]
Шаг 3: Создайте файл аутентификации
Создайте файл с именем authentication.py внутри вашего приложения и добавьте в него следующий код, чтобы определить класс JWTAuthentication, который будет использован для аутентификации в Django Admin через JWT:
from rest_framework_jwt.authentication import BaseJSONWebTokenAuthentication class JWTAuthentication(BaseJSONWebTokenAuthentication): def authenticate(self, request): # добавьте специфическую логику для аутентификации здесь # верните пользовательский объект пользователя и токен, если аутентификация прошла успешно # или верните None, если аутентификация не удалась ...
Шаг 4: Включите настройку аутентификации
Откройте файл настроек вашего проекта (settings.py) и добавьте следующие строки, чтобы задействовать JWTAuthentication в Django Admin:
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'путь.к.вашему.файлу.authentication.JWTAuthentication', ], }
Шаг 5: Настройте Django Admin для использования JWT
Откройте файл urls.py вашего проекта и добавьте следующие строки в конец файла, чтобы применить аутентификацию на основе JWT для Django Admin:
from django.contrib import admin admin.site.login_template = 'admin/login.html' admin.autodiscover() urlpatterns = [ ... path('admin/', admin.site.urls), ... ]
Шаг 6: Создайте пользовательский шаблон аутентификации
Создайте шаблон с именем login.html в директории admin вашего приложения и добавьте в него код, определяющий пользовательский интерфейс аутентификации через JWT.
{% extends 'admin/login.html' %} {% block extrastyle %} {{ block.super }} <link rel="stylesheet" type="text/css" href="{% static 'admin/css/login.css' %}"> {% endblock %}
Шаг 7: Произведите миграции и запустите сервер
Выполните миграции для вашего проекта, чтобы применить все изменения модели. Затем запустите сервер Django и перейдите на страницу администратора, чтобы протестировать аутентификацию через JWT.
Вот и все! Теперь аутентификация в Django Admin будет выполняться с использованием JSON Web Tokens. Обратите внимание, что вам также понадобится настроить JWT-токены, устанавливая значение JWT_SECRET_KEY
в файле настроек проекта (settings.py).