为什么Django Swagger不显示具有IsAuthenticated权限的url文档?

Dee*_*pak 6 django django-rest-framework django-swagger

在我的api中,默认的permmision类为'rest_framework.permissions.IsAuthenticated',而django swagger不显示任何网址的文档。

我的REST_FRAMEWORK设置是:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',),

    'DEFAULT_AUTHENTICATION_CLASSES': (
         'rest_framework.authentication.TokenAuthentication',
    )
}
Run Code Online (Sandbox Code Playgroud)

我的swagger_settings是:

SWAGGER_SETTINGS = {
    'USE_SESSION_AUTH': False,
    'SECURITY_DEFINITIONS': {
        'api_key': {
            'type': 'apiKey',
            'in': 'header',
            'name': 'Authorization'
        }
    },
Run Code Online (Sandbox Code Playgroud)

因此,如何在django swagger中显示经过身份验证的终结点。

wen*_*isa 3

这个话题实际上在 GitHub 上引起了很大的讨论。您似乎正在尝试访问具有IsAuthenticated权限类别的视图,并且如果您尚未经过身份验证,它们可能会被禁止。

您只需添加rest_framework.authentication.SessionAuthenticationDRF 设置即可通过 Swagger 访问这些端点:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',),

    'DEFAULT_AUTHENTICATION_CLASSES': (
         'rest_framework.authentication.TokenAuthentication',
         'rest_framework.authentication.SessionAuthentication
    )
}
Run Code Online (Sandbox Code Playgroud)