我正在使用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
有人知道如果在端点定义中没有额外的参数的话,这是否可行?
答案 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