1

我在我的应用程序中声明了一个中间件部分,在请求之前执行了一些代码。在烧瓶中有两个装饰器被调用@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


如果令牌有问题,那么我想捕获该异常并返回消息“无效令牌”。我不想执行进一步的代码。那么如何从除了块返回响应?

4

3 回答 3

1

文档中所述,您可以以与从 Flask 视图代码中正常完成的方式相同的方式返回响应。例如:

@app.before_request
def before_request_callback():
    try:
    # Checking jwt-authentication for every request
        verify_jwt_in_request()
    except:
        return 'invalid token', 401
于 2019-12-30T11:24:08.633 回答
1

知道如何解决它。

@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)
于 2019-12-30T13:26:57.903 回答
0

对于烧瓶 jwt 扩展,您根本不需要捕获异常。简单地拥有verify_jwt_in_request()就足够了,它将调用默认的错误处理程序并返回适当的响应以说明令牌不存在或无效的原因。您可以在此处查看默认响应并对其进行自定义:https ://flask-jwt-extended.readthedocs.io/en/stable/api/#module-flask_jwt_extended

于 2019-12-30T14:17:04.923 回答