> На каком этапе лучше проверять токен в Django (Python)

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: Стилсофт

Стек: Python

> Пример ответа

Проверку токена лучше всего выполнять на этапе middleware. В Django это позволяет перехватить запрос до того, как он попадет в view или обработчик URL, что обеспечивает централизованную аутентификацию для всех защищенных эндпоинтов.

Пример реализации в middleware.py:

PYTHON
from django.http import JsonResponse
from django.utils.deprecation import MiddlewareMixin
from rest_framework.authtoken.models import Token
class 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.user
except 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:

PYTHON
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}

Этот подход гарантирует, что токен проверяется до выполнения бизнес-логики, снижая дублирование кода и повышая безопасность.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью