【问题标题】:Nelmio API doc area and bearer token with symfony 4Nelmio API 文档区域和带有 symfony 4 的不记名令牌
【发布时间】:2020-05-05 21:30:52
【问题描述】:

我在 Symfony 4 中有 API。我将 NelmioApiDocBundle 添加到我的项目中,但我的文档有问题。这是我的配置: 包\nelmio_api_doc.yaml

nelmio_api_doc:
    documentation:
        #        schemes: [http, https]
        info:
            title: Symfony JWT API
            description: Symfony JWT API docs
            version: 1.0.0
        securityDefinitions:
            Bearer:
                type: apiKey
                description: 'Authorization: Bearer {jwt}'
                name: Authorization
                in: header
        security:
            - Bearer: []
    areas: # to filter documented areas
        default:
            path_patterns:
                - ^/api(?!/doc$) # Accepts routes under /api except /api/doc

config\routes.yaml

# Expose your documentation as JSON swagger compliant
app.swagger_ui:
    path: /api/doc
    methods: GET
    defaults: { _controller: nelmio_api_doc.controller.swagger_ui }

这是我招摇的 ui 屏幕:

我有控制器:SpeakerController、HomeController,我怎样才能让每个控制器成为一个单独的区域,而其余的则默认?即Speaker区域中的SpeakerController,Home区域中的HomeController等..

我的下一个问题是我有一个受不记名令牌保护的 API,当我在招摇中单击授权时,我将添加当前的 jwt 令牌并且我想请求它,作为响应我得到:

{
  "code": 401,
  "message": "JWT Token not found"
}

在邮递员中我没有问题:

【问题讨论】:

  • 写入不记名令牌问题 - 当您在 Swagger UI 中输入令牌时,您是否在其前面加上 Bearer
  • @Helen 是的,我添加了前缀 Bearer

标签: symfony swagger symfony4 nelmioapidocbundle


【解决方案1】:

你需要用标签来注释你的控制器:

@SWG\Tag(name="Speaker")

见: https://symfony.com/doc/current/bundles/NelmioApiDocBundle/index.html#using-the-bundle

【讨论】:

  • 效果很好,但我的不记名令牌有问题,我添加了好的令牌,但是当我请求时出现错误“未找到 JWT 令牌”
  • @PawelC 你用@Security(name="Bearer")注释你的控制器吗
【解决方案2】:

您必须发送带有前缀的 apiKey 值

承载者

【讨论】:

  • 嗨 :) 你的回答解决了我的问题。我忘了在开始时添加 Bearer,我只输入了令牌。
  • 您也可以在配置中更改或删除此前缀
猜你喜欢
  • 2023-03-13
  • 2018-06-22
  • 2023-02-05
  • 2017-12-06
  • 2016-03-27
  • 2019-06-26
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
相关资源
最近更新 更多