Django - Отключить аутентификатор для Swagger
Итак, у меня есть приложение Django с Swagger, но я также добавил пользовательский аутентификатор к каждой конечной точке автоматически с
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'cheers.utils.authenticator.CognitoAuthentication',
),
}
Как отключить это для swagger? Я не уверен, потому что Swagger добавляется к URL, это не представление
Как отключить автоматическую аутентификацию для swagger?
.
Также я думаю, что побочным вопросом будет, как отключить этот URL, когда debug
является False
Чтобы отключить аутентификацию | разрешение на swagger-урлы, установите permission_classes в get_schema_view следующим образом :
urls.py
from django.urls import path
from rest_framework import permissions
from rest_framework.schemas import get_schema_view
from django.conf import settings
schema_view = get_schema_view(
openapi.Info(
title="Resource API",
default_version="v1",
description="A sample API for resource with DRF",
terms_of_service="https://www.google.com/policies/terms/",
contact=openapi.Contact(email="your_email@yopmail.com"),
license=openapi.License(name="BSD License"),
),
public=True,
permission_classes=(
permissions.AllowAny, ), # Anyone have access to API documentation
)
if settings.DEBUG == False
# urlpatterns
urlpatterns = [
# Production urls only
]
else:
urlpatterns = [
# Production urls + swagger doc urls
path(
'doc/',
schema_view.with_ui('swagger', cache_timeout=0),
name='schema-swagger-ui'),
]
Для администрирования Django без аутентификации следуйте этой записи.