Как обрабатывать сеансовую и токен-аутентификацию одновременно, используя промежуточное ПО в django?

Я хочу использовать токен и сеансовую аутентификацию в своем приложении с приоритетом токена. Я создал два портала с одним и тем же URL, один использует сеанс, а другой использует токен. Таким образом, когда сеанс доступен в файле cookie, запрос на основе токена завершается неудачно с сообщением об ошибке "CSRF Token отсутствует".

Одно из решений, которое я имею в виду, это использование промежуточного программного обеспечения, где я могу сделать приоритет токену. Если оба доступны в запросе, то пользовательское промежуточное программное обеспечение удалит материалы, связанные с сеансом, сохранит только информацию, связанную с токеном, и продолжит работу.

Если у кого-то есть решение для этой проблемы, пожалуйста, напишите в ответ?

Заранее спасибо.

2 ответа

Решение

В моем случае я написал специальное промежуточное ПО, чтобы справиться с ситуацией. 1. Когда я вхожу, используя API, и путь API **/api/accounts/login**, Поэтому, когда запрос приходит по этому URL, я удаляю сессионный и csrftoken оба.

Когда HTTP_AUTHORIZATION доступен в запросе, я удаляю сеанс и csrftoken.

Использование выше двух ситуаций удаления может быть обработано в моем случае.

Спасибо всем за помощь.!!

Промежуточное программное обеспечение Django выполняется в порядке, соответствующем кортежу MIDDLEWARE_CLASSES.

Вы должны убедиться, что ваше промежуточное программное обеспечение для аутентификации на основе токенов находится после AuthenticationMiddleware в MIDDLEWARE_CLASSES.

Документы описывают этот подход в контексте RemoteUserMiddleware.