> На каком этапе лучше проверять токен в Django (Python)
Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: Стилсофт
Стек: Python
> Пример ответа
Проверку токена лучше всего выполнять на этапе middleware. В Django это позволяет перехватить запрос до того, как он попадет в view или обработчик URL, что обеспечивает централизованную аутентификацию для всех защищенных эндпоинтов.
Пример реализации в middleware.py:
PYTHONfrom django.http import JsonResponsefrom django.utils.deprecation import MiddlewareMixinfrom rest_framework.authtoken.models import Tokenclass TokenAuthMiddleware(MiddlewareMixin):def process_request(self, request):auth_header = request.META.get('HTTP_AUTHORIZATION', '')if auth_header.startswith('Token '):token_key = auth_header.split(' ')[1]try:token = Token.objects.get(key=token_key)request.user = token.userexcept Token.DoesNotExist:return JsonResponse({'error': 'Invalid token'}, status=401)else:# Если токен обязателен для всех запросовreturn JsonResponse({'error': 'Token required'}, status=401)
Также можно использовать встроенные механизмы Django REST Framework, например, rest_framework.authentication.TokenAuthentication, подключая его глобально в settings.py:
PYTHONREST_FRAMEWORK = {'DEFAULT_AUTHENTICATION_CLASSES': ['rest_framework.authentication.TokenAuthentication',],}
Этот подход гарантирует, что токен проверяется до выполнения бизнес-логики, снижая дублирование кода и повышая безопасность.
> Похожие задачи по Python
Сколько SQL-запросов выполняется при использовании join в Django ORM
Как выполняется чистый SQL в Django, например через execute
Для чего используются миксины в Django
В чем разница использования middleware в FastAPI и в Django или Flask?
> Похожие задачи по backend
Сколько SQL-запросов выполняется при использовании join в Django ORM
Как выполняется чистый SQL в Django, например через execute
Для чего используются миксины в Django
В чем разница использования middleware в FastAPI и в Django или Flask?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью