1
resposta

Limitando acesso ao Swagger

E se eu quiser que somente admins possam utilizar o swagger? eu tentei permission_classes=(permissions.IsAdminUser,) mas ele bloquei o acesso mesmo eu estando logado na sessão do admin, testei tb o permissions.IsAuthenticatedOrReadOnly mas eu tinha acesso a todos os métodos mesmo não estando autenticado.

1 resposta

Olá Eduardo, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Para limitarmos o acesso a API, definimos a propriedade public como False, dessa forma apenas os endpoints da api a qual o usuário logado tem acesso serão exibidos, não sendo exibidos para usuários que não estão logados no swagger. Para que essa opção seja implementada, será necessário também realizar a implementação da rota de login e logout na API.

Assim, no arquivo, url.py na variável schema_view, defina o atributo public=False, deixe-a como apresento abaixo:

schema_view = get_schema_view(
   openapi.Info(
      title="AluraFlix",
      default_version='v1',
      description="Provoder local de séries e filmes desenvolvida pela Alura no curso de Django Rest",
      terms_of_service="#",
      contact=openapi.Contact(email="c3po@c3po.com.br"),
      license=openapi.License(name="BSD License"),
   ),
   public=False,
   permission_classes=[permissions.AllowAny],
)

Agora, na variável urlpatterns presente no arquivo url.py iremos definir a rota em que o usuário irá efetuar o login e o logout. Adicione o seguinte caminho:

path('accounts/', include('rest_framework.urls')),

Após realizar as mudanças listadas, salve os arquivos modificados, inicie API e acesse a url http://127.0.0.1:8000/swagger/. Na página que será aberta, localize o botão na cor verde que está escrito Django Login que está à direita da tela. Clique nele, você será direcionado para a rota de login, entre com as credenciais de usuário para ter acesso aos endpoints da API.

No GIF abaixo é apresentado o acesso ao swagger da API

GIF contendo a exibição de uso da

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Espero ter lhe ajudado. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!