在命中每个端点之前,都会对令牌进行授权。我已经创建了与以下相同的应用程序
os.environ[TOKENINFO_FUNC] = some_function
add.api(openapi.yaml)
app.add_error_handler(OAuthResponseProblem, render_unauthorized)
def render_unauthorized:
return customized response
def some_function:
raise OAuthResponseProblem
这是挂接异常的正确方法吗?我收到上述代码的错误。这里render_unauthorized没有被调用。我想验证令牌并发送端点用户自定义的响应。提前谢谢。
您需要实现x-tokenInfoFunc
。在您的功能中,您可以发送自定义响应。
- 文档:https://connexion.readthedocs.io/en/latest/security.html#oauth-2-身份验证和授权
- 示例:https://github.com/zalando/connexion/tree/master/examples/swagger2/oauth2
如果太晚了,很抱歉。我也遇到过同样的问题。您所需要做的就是用您的自定义字符串引发Unauthorized异常。
import jwt
from werkzeug.exceptions import Unauthorized
# This is your TOKENINFO_FUNC
def decode_token(jwt_token):
try:
payload = jwt.decode(jwt_token, 'SECRET_KEY', algorithms=['HS256'])
return payload
except jwt.ExpiredSignatureError:
raise Unauthorized('Token expired. Please log in again.')
except jwt.InvalidTokenError:
raise Unauthorized('Invalid token. Please log in again.')