Почему Django REST Framework реализует другой механизм аутентификации, чем встроенный механизм Django?
Для этого есть два класса настроек, которые можно настроить:
-
settings.AUTHENTICATION_BACKENDS
, который обрабатывает аутентификацию на уровне Django и -
settings.REST_FRAMEWORK['DEFAULT_AUTHENTICATION_CLASSES']
, который аутентифицируется на уровне REST-Framework
Проблема, с которой я столкнулся, заключается в том, что у меня есть Middleware-уровень, который проверяет, вошел ли пользователь в систему или нет.
При использовании веб-клиента, который аутентифицируется через сеансы, это работает отлично. Тем не менее, с мобильного телефона или при запуске набора тестов (например, аутентификации с использованием заголовков HTTP и токенов) промежуточное ПО обнаруживает пользователя как AnonymousUser
, но к моменту перехода на уровень REST Framework заголовок HTTP Authorization
читать, и пользователь вошел в систему.
Почему они не оба происходят до промежуточного ПО? Кроме того, почему методы проверки подлинности REST Framework не полагаются на бэкэнд аутентификации Django?