为什么Django Swagger没有显示具有权限IsAuthenticated的网址的文档?

时间:2017-01-04 11:21:46

标签: 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',
    )
}

我的swagger_settings是:

SWAGGER_SETTINGS = {
    'USE_SESSION_AUTH': False,
    'SECURITY_DEFINITIONS': {
        'api_key': {
            'type': 'apiKey',
            'in': 'header',
            'name': 'Authorization'
        }
    },

那么如何在django swagger中显示经过身份验证的端点。

1 个答案:

答案 0 :(得分:0)

该主题实际上引起了广泛的讨论in GitHub。似乎您正在尝试访问具有IsAuthenticated作为权限类的视图,并且如果您尚未通过身份验证,则很可能被禁止。

您只需在DRF设置中添加rest_framework.authentication.SessionAuthentication,即可通过Swagger访问这些端点:

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

    'DEFAULT_AUTHENTICATION_CLASSES': (
         'rest_framework.authentication.TokenAuthentication',
         'rest_framework.authentication.SessionAuthentication
    )
}