我使用Symfony (5)和NelmioApiDocBundle (4.0)和LexikJWTAuthenticationBundle来创建一个带有Swagger的应用程序接口。我已经设置了端点和身份验证,一切工作正常。我有功能齐全的API与身份验证,有一个文档,我可以成功地生成Open API规范。规范中缺少一件事:“身份验证端点”,我找不到一种方法将其添加到生成的规范和文档中(除了覆盖整个身份验证之外)。
因为我使用Symfony安全层和防火墙,并且它与LexikJWTAuthenticationBundle集成在一起,所以没有地方设置Swagger注释,而且看起来捆绑包本身并不能处理生成“安全部分”的问题。不久前,我使用了一个ApiPlatform,在那里它是由一个“装饰者”完成的。
有没有人知道有什么方法(注解?)要生成文档的安全部分,还是必须从头开始创建身份验证保护(?)
发布于 2020-12-28 22:30:18
不要紧。在我发布它的那一刻,我找到了一个解决方案。在包/nelmio_bundle_api.yaml中,您可以配置不是由注释创建的附加文档(swagger规范)。基本上,您必须添加一个指向身份验证路由的新路径(在我的示例中为/api/login_check),并在“组件”部分中定义凭据和令牌对象。
因此,使用symfony授权,它将是(这只是yaml文件的安全部分):
nelmio_api_doc:
documentation:
paths:
/api/login_check:
post:
tags:
- Token
operationId: postCredentialsItem
summary: Get JWT token to login.
requestBody:
description: Create new JWT Token
content:
application/json:
schema:
$ref: '#/components/schemas/Credentials'
responses:
'200':
description: Get JWT token
content:
application/json:
schema:
$ref: '#/components/schemas/Token'
components:
schemas:
Token:
type: object
properties:
token:
type: string
readOnly: true
Credentials:
type: object
properties:
username:
type: string
password:
type: string
securitySchemes:
bearerAuth:
type: apiKey
scheme: bearer
bearerFormat: JWT
security:
- bearerAuth: []https://stackoverflow.com/questions/65478169
复制相似问题