我在应用程序中声明了一个中间件部分,在请求之前在其中执行一些代码。
在flask中,有两个装饰器,分别称为@app.before_request
和@app.after_request
,我们可以使用它们声明一个中间商品部分。我想验证中间件中JWT令牌的身份验证。
@app.before_request
def before_request_callback():
try:
# Checking jwt-authentication for every request
verify_jwt_in_request()
except:
#Fill this block
如果令牌有问题,那么我想捕获该异常并返回消息“无效令牌”。我不想执行更多的代码。那么如何从除块之外返回响应?
答案 0 :(得分:0)
如documentation中所述,您可以以与通常从Flask视图代码中完成响应相同的方式返回响应。例如:
@app.before_request
def before_request_callback():
try:
# Checking jwt-authentication for every request
verify_jwt_in_request()
except:
return 'invalid token', 401
答案 1 :(得分:0)
了解如何解决。
@app.before_request
def before_request_callback():
try:
# Checking jwt-authentication for every request except login
verify_jwt_in_request()
except:
return make_response(jsonify(error_dict(current_request_id(), 'Invalid token ', 401)),
status.HTTP_401_UNAUTHORIZED)
答案 2 :(得分:0)
对于烧瓶jwt扩展,您根本不需要捕获异常。仅使用verify_jwt_in_request()
就足够了,它将调用默认的错误处理程序并返回适当的响应,以说明为什么令牌不存在或无效。您可以在此处查看默认响应并对其进行自定义:https://flask-jwt-extended.readthedocs.io/en/stable/api/#module-flask_jwt_extended