如何解决在 NelmioApiDocBundle 中向 Swagger 添加身份验证文档
我将 Symfony (5) 与 NelmioApiDocBundle (4.0) 和 LexikJWTAuthenticationBundle 一起使用,以使用 Swagger 创建 API。 我已经设置了端点和身份验证,一切都按预期工作。 我有带身份验证的功能齐全的 API,有一个文档,我可以成功生成 Open API 规范。 规范中缺少一件事:“身份验证端点”,我找不到将其添加到生成的规范和文档中的方法(除了覆盖整个身份验证)
因为我使用的是 Symfony 安全层和防火墙,并且它与 LexikJWTAuthenticationBundle 集成在一起,所以没有地方设置 Swagger 注释,而且看起来 bundle 本身不能处理生成“安全部分” 前段时间我使用了一个 ApiPlatform,在那里它是由一个“装饰者”完成的
任何人都知道有没有办法(注释?)生成文档的安全部分,或者我是否必须从头开始创建身份验证保护(?)
解决方法
没关系。我发布它的一分钟我找到了一个解决方案。 在 packages/nelmio_bundle_api.yaml 中,您可以配置不是由注释创建的附加文档(swagger 规范)。 基本上,您必须添加一个指向您的身份验证路由的新路径(在我的情况下为 /api/login_check)并在“组件”部分中定义 Credential 和 Token 对象。
所以有了 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: []
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。