Аутентификация в Swagger - Django Rest Framework - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь использовать Swagger с DRF, но почему-то не работает должным образом.

Это функция swagger_view, которую я использую:

def get_swagger_my_view(title=None, url=None, patterns=None, urlconf=None):
    """
    Returns schema view which renders Swagger/OpenAPI.
    """

    from rest_framework.views import APIView

    class SwaggerSchemaView(APIView):
        # _ignore_model_permissions = True
        # permission_classes = [AllowAny]
        permission_classes = [IsAuthenticated]
        exclude_from_schema = True
        renderer_classes = [
            CoreJSONRenderer,
            renderers.OpenAPIRenderer,
            renderers.SwaggerUIRenderer
        ]

        def get(self, request):
            generator = SchemaGenerator(
                title=title,
                url=url,
                patterns=patterns,
                urlconf=urlconf
            )
            schema = generator.get_schema(request=request)

            if not schema:
                raise exceptions.ValidationError(
                    'The schema generator did not return a schema Document'
                )

            return Response(schema)

    return SwaggerSchemaView.as_view()

И моя идея заключалась в входе в /admin/ (в моем случае dashboard) и перенаправлении на swagger

Вот мои SWAGGER_SETTINGS

SWAGGER_SETTINGS = {
    'SECURITY_DEFINITIONS': {
        'api_key': {
            'type': 'apiKey',
            'in': 'header',
            'name': 'Authorization'
        }
    },
    'LOGIN_URL': '/dashboard/login/'
}

И когда я go перехожу на URL Swagger, я вижу вот это:

enter image description here

Что здорово.

Затем, когда я нажимаю Session Login

I go на /dashboard/login с /dashboard/login/?next=/docs/, мне это нравится.

Но после входа в систему я возвращаюсь к тому же виду, что и на изображении. И когда я снова нажимаю Session login, он входит в /admin/ (в моем случае dashboard), что означает, что он видит, что я аутентифицирован, но почему-то Swagger не может видеть, что я аутентифицирован.

Может у кого раньше была подобная проблема.

Спасибо!

...