将x-apikeyInfoFunc的返回值转发给操作

时间:2019-11-22 16:12:36

标签: python swagger openapi

我正在使用openapi定义我的API。我刚刚添加了此安全模式:

  securitySchemes:
    api_key:
      type: apiKey
      name: X-Auth
      in: header
      x-apikeyInfoFunc: apikey_auth

其中apikey_auth的定义如下

def apikey_auth(token, required_scopes):
    decrypted_token = None
    try:
        decrypted_token = mydecrypter.decrypt(token)
    except InvalidToken:
        raise OAuthProblem('Invalid token')

    return {'decrypted_token': decrypted_token}

现在,我想对在openapi中定义的实际端点使用此身份验证,如下所示:

/myendpoint
   get:
      operationId: operation
      #more stuff
      security:
      - api_key: []

现在调用myendpoint时,身份验证已完成,并按预期工作。我现在想拥有的是将apikey_auth的返回值传递到operation的调用中,这样我就可以像这样访问decrypted_token中的operation

def operation(decrypted_token):
    data = get_data_for_token(decrypted_token)
    return data

有人知道如果在端点定义中没有额外的参数的话,这是否可行?

1 个答案:

答案 0 :(得分:0)

已解决。无论出于何种原因,这些更改都可以起作用:

def apikey_auth(token, required_scopes):
    decrypted_token = None
    try:
        decrypted_token = mydecrypter.decrypt(token)
    except InvalidToken:
        raise OAuthProblem('Invalid token')

    return {'sub': decrypted_token}
def operation(user):
    data = get_data_for_token(user)
    return data