Django Rest Framework требует как сессию, так и токен для выполнения аутентифицированного запроса

Я нахожусь в процессе создания REST API с использованием Django Rest Framework для веб-приложения, сделанного третьей стороной.

Я пытаюсь настроить REST API так, чтобы он был доступен с использованием SessionAuthentication или TokenAuthentication и чтобы документация Swagger (созданная с помощью drf-yasg) была доступна без аутентификации.

На данный момент я столкнулся с проблемой: когда я отправляю запрос к моему API, он требует, чтобы в запросе были отправлены sessionid и token. Если я удаляю токен, то получаю:

{"detail":"Invalid token."}

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

Мой файл settings.py выглядит следующим образом:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        #'rest_framework.authentication.SessionAuthentication',
        
    ],
}

Как видно выше, даже при отключенной SessionAuthentication для REST API, он все равно требует установки сессии. Кто-нибудь знает, почему он это делает? Мои первые мысли, что он использует django.contrib.auth и применяет это ко всем представлениям, но я не уверен, я немного профан в Django, если честно.

Другая проблема заключается в том, что я выложил некоторую документацию для моего API с помощью drf-yasg, которую я хочу сделать доступной без аутентификации. Моя get_schema_view для этого выглядит следующим образом:

schema_view = get_schema_view(
   openapi.Info(
      title="<redacted>",
      default_version='v1',
      description="<redacted>",
   ),
   public=True,
   permission_classes=[permissions.AllowAny],
   authentication_classes=[]
)

Согласно документации drf-yasg это должно позволить любому получить доступ к документации, но опять же, когда я пытаюсь получить доступ к ней, я перенаправляюсь на страницу входа в приложение.

Вернуться на верх