首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NelmioApiDocBundle中向Swagger添加身份验证文档

在NelmioApiDocBundle中向Swagger添加身份验证文档
EN

Stack Overflow用户
提问于 2020-12-28 21:11:08
回答 1查看 255关注 0票数 1

我使用Symfony (5)和NelmioApiDocBundle (4.0)和LexikJWTAuthenticationBundle来创建一个带有Swagger的应用程序接口。我已经设置了端点和身份验证,一切工作正常。我有功能齐全的API与身份验证,有一个文档,我可以成功地生成Open API规范。规范中缺少一件事:“身份验证端点”,我找不到一种方法将其添加到生成的规范和文档中(除了覆盖整个身份验证之外)。

因为我使用Symfony安全层和防火墙,并且它与LexikJWTAuthenticationBundle集成在一起,所以没有地方设置Swagger注释,而且看起来捆绑包本身并不能处理生成“安全部分”的问题。不久前,我使用了一个ApiPlatform,在那里它是由一个“装饰者”完成的。

有没有人知道有什么方法(注解?)要生成文档的安全部分,还是必须从头开始创建身份验证保护(?)

EN

回答 1

Stack Overflow用户

发布于 2020-12-28 22:30:18

不要紧。在我发布它的那一刻,我找到了一个解决方案。在包/nelmio_bundle_api.yaml中,您可以配置不是由注释创建的附加文档(swagger规范)。基本上,您必须添加一个指向身份验证路由的新路径(在我的示例中为/api/login_check),并在“组件”部分中定义凭据和令牌对象。

因此,使用symfony授权,它将是(这只是yaml文件的安全部分):

代码语言:javascript
复制
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: []
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65478169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档