Интеграция Django Swagger не показывает аутентифицированные URL после нажатия кнопки Authorize
Я интегрирую Swagger с аутентификацией на основе токенов для DRF API. Swagger отображает документацию для всех API, когда я использую класс разрешения 'AllowAny' для своего API, но как только я начинаю использовать класс 'IsAuthenticated', как и ожидалось, документация для этих API не отображается по умолчанию, и мне представляется кнопка 'Authorize' на UI. Как только я нажимаю на нее, добавляя действительный 'Bearer JWT_Token' (который я получаю через вызов API токена через POSTMAN), она показывает мне кнопку 'Logout' и 'Close'. С помощью инструментов разработчика я вижу, что при нажатии на кнопку 'Authorize' не происходит взаимодействия с сервером, в результате чего я все еще не могу посмотреть документацию для этих аутентифицированных API.
Ниже приведены настройки, которые я использую:
SWAGGER_SETTINGS = {
'SECURITY_DEFINITIONS': {
"api_key": {
"type": "apiKey",
"in": "header",
"name": "Authorization"
}
}
}
# JWT Token Configuration
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
'ROTATE_REFRESH_TOKENS': False,
'BLACKLIST_AFTER_ROTATION': True,
'UPDATE_LAST_LOGIN': False,
'ALGORITHM': 'HS256',
'SIGNING_KEY': SECRET_KEY,
'VERIFYING_KEY': None,
'AUDIENCE': None,
'ISSUER': None,
'AUTH_HEADER_TYPES': ('Bearer',),
'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',
'USER_ID_FIELD': 'id',
'USER_ID_CLAIM': 'user_id',
'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
'TOKEN_TYPE_CLAIM': 'token_type',
'JTI_CLAIM': 'jti',
'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
}
# REST Framework configurations
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 5,
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
'rest_framework.permissions.AllowAny',
),
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
),
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.MultiPartParser',
'rest_framework.parsers.FileUploadParser',
'rest_framework.parsers.FormParser',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
'rest_framework.authentication.SessionAuthentication'
),
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.NamespaceVersioning',
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
}
Ниже приведен один из API, который я не могу увидеть в swagger:
class UserAPI(viewsets.ModelViewSet):
queryset = userservice.get_all_users()
serializer_class = userserializer.UserSerializer
permission_classes = (permissions.IsAuthenticated,)
authentication_classes = (JWTAuthentication,)