OpenAPI 3.0规范中如何正确声明具有临时身份验证的路由?

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

我有一条返回公开文章内容的路线。如果用户已登录,则路由返回不同的内容(具有附加详细信息的内容)。 我不知道如何在我的 OpenAPI 描述中声明这一点。 我在官方文档中找不到任何相关内容。

我的安全方案定义:

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

我的路线声明:

 /article/{slug}:
    get:
      tags:
        - articles
      summary: Return an article with more detail for authenticated users
      operationId: get_detail_article
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
      security: 
        - {}
        - bearerAuth: []
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Article"

认证部分是否正确?

swagger 编辑器中的结果:

enter image description here

如您所见,右边的锁是黑色的并且是关闭的,这意味着需要进行身份验证。

openapi swagger-ui
1个回答
2
投票

不确定您使用的是哪个 Swagger 编辑器版本,但针对

OR
条件正确定义了安全对象,如......必须使用
bearerAuth
OR
none

openapi: 3.0.3
info:
  title: test
  version: 1.0.0
servers:
  - url: https://www.example.com
paths:
  "/article/{slug}":
    get:
      tags:
        - articles
      summary: Return an article with more detail for authenticated users
      operationId: get_detail_article
      parameters:
        - name: slug
          in: path
          required: true
          schema:
            type: string
      security:
        - {}
        - bearerAuth: []
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Article"
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    Article:
      description: An Article
      type: string

我获得了 Swagger UI 免费帐户的透明锁定 unlocked

如果我注释掉空的安全性,锁就会更改为仅需要

bearerAuth
locked

© www.soinside.com 2019 - 2024. All rights reserved.