Django REST Framework Swagger - 身份验证错误

问题描述 投票:0回答:2

我按照文档中的说明进行操作。所以这是我的观点:

from rest_framework.decorators import api_view, renderer_classes from rest_framework import response, schemas from rest_framework_swagger.renderers import OpenAPIRenderer, SwaggerUIRenderer @api_view() @renderer_classes([OpenAPIRenderer, SwaggerUIRenderer]) def schema_view(request): generator = schemas.SchemaGenerator(title='Bookings API') return response.Response(generator.get_schema(request=request))

我将以下内容添加到我的

urls.py

中:

url(r'^docs/', views.schema_view),

当我进入项目的

/docs/

页面时,出现以下错误:

401 : {"detail": "Authentication credentials were not provided."} http://127.0.0.1:8000/docs/?format=openapi

在浏览器控制台中我收到此消息:

Unable to Load SwaggerUI init.js (line 57)

当我将

permission_classes

schema_view
 设置为 
AllowAny
 时,我可以查看我的 api 文档。但是,我不确定这是否是正确的方法。没有办法以管理员或任何其他用户身份登录来查看文档。另外,在浏览器中查看此内容时如何提供身份验证令牌?也许我错过了文档中的某些内容。

python django django-rest-framework swagger swagger-ui
2个回答
20
投票
我想我已经找到了解决方案。

settings.py

中,我添加了以下设置:

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

然后,当我加载页面时,我只需单击右上角的

Authorize 按钮,然后在 value 文本字段中输入该值:

Token <valid-token-string>

但是,我仍然需要将

schema view

的权限类别设置为
AllowAny
。身份验证令牌只是让我从不同的用户切换,允许我查看不同的端点集。


1
投票
有没有办法以管理员或任何其他用户身份登录来查看文档。

如果您仅使用令牌身份验证,请首先

为您的用户创建令牌,然后通过设置标头来访问资源

curl -X GET http://127.0.0.1:8000/api/example/ -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
    
© www.soinside.com 2019 - 2024. All rights reserved.