2

我正在使用带有 Flask-connexion 的 swagger 2.0 API。

在 swagger.yml 文件中,我将安全定义设置为基本:

  BasicAuth:
    type: basic

然后,我将此安全性添加到我想要保护的路径中。

# Tenant paths
  /tenant:
    get:
      operationId: tenant.read_all
      tags:
        - Tenant
      summary: Read the entire set of tenants, sorted by name
      description: Read the entire set of tenants, sorted by name
      security:
        - basicAuth: []
      responses:
        200:
          description: Successfully read tenant set operation
          schema:
            type: array
            items:
              $ref: '#/definitions/Tenant'

但我不明白如何指定验证登录名和密码的功能。我需要在调用路径函数之前收集这些参数并验证。

例如,如果这是使用 Flask-Login 或 Flask-BasicAuth 隐式定义的?

或者是否应该通过在我的tenant.py文件中添加代码来明确地完成没有Flask-connexion,例如:

@auth_basic.login_required
def read_all():
...

我希望 Flask-connexion 重定向到验证登录名和密码的身份验证函数,然后重定向到路径方法/函数。

4

1 回答 1

1

https://connexion.readthedocs.io/en/latest/security.html#basic-authentication

您必须在 Swagger 文件中定义:

securityDefinitions: basic: type: basic x-basicInfoFunc: app.basic_auth

x-basicInfoFunc将映射到验证函数,在本例中,函数basic_auth应用文件中。

Swagger 的完整示例:https ://github.com/zalando/connexion/tree/master/examples/swagger2/basicauth

OpenApi 的完整示例:https ://github.com/zalando/connexion/tree/master/examples/openapi3/basicauth

于 2020-01-12T13:28:54.310 回答