У нас есть набор API, уже задокументированный с использованием drf-yasg .В файле settings.py
я установил эти настройки:
schema_view = get_schema_view(
openapi.Info(
title="myTitle",
default_version='v' + str(1.0)
),
patterns=myPatterns,
public=False,
permission_classes=(permissions.IsAuthenticated,),
)
Я создал некоторых пользователей с помощью команды python manage.py createsuperuser
, которая может получить доступ ко всем конечным точкам API после входа в систему.
СначалаПроблема: Как я могу установить некоторые «разрешения», чтобы некоторые пользователи могли получить доступ к набору API, в то время как другая группа пользователей, другой набор и пользователь, похожий на администратора, имеют доступ ко всем API?
Вторая проблема: при использовании django-rest-swagger я мог скрыть все конечные точки для анонимных пользователей, пытающихся достичь конечной точки /swagger
, установив permission_classes
в IsAuthenticated
.После этого пользователь получит доступ к пустой веб-странице сваггера, с которой он сможет войти, чтобы показать конечные точки API.
Однако, поскольку я обновил до drf-yasg
, я установил такое же разрешение (см. Выше),но если анонимный пользователь пытается получить доступ к /swagger
, я получаю ошибку фреймворка django: «NoReverseMatch at / swagger /».Если пользователь уже вошел в систему до получения доступа к Swagger, то нет проблем.