@JWT_Required装饰器异常处理

时间:2019-09-07 16:21:32

标签: flask flask-jwt-extended flask-jwt

我正在使用通过JWT的身份验证API,效果很好。 该API被用来授权用户使用我的Web应用程序。为此,我通过Flask将JWT access_tokens手动存储为cookie。 我使用@JWT_required装饰器保护我的资源,如果我尝试使用有效令牌访问安全资源,则一切正常。 但是,如果访问令牌丢失或无效/过期,我会收到JSON消息:

{
      "message": "Missing cookie \"access_token_cookie\""
}

这显然是正确的消息,但不是显示JSON,而是要重定向到Flask提供的相应状态码错误页面-在这种情况下为401。

  • 我尝试为Flask和JWT Manager添加错误处理
  • 自定义装饰器,尽管我在此方面的表现不佳,因为我认为FLASK-JWT扩展中必须有解决方案
@app.route('/dashbord')
@jwt_required
def dashbord():
    return render_template('dashbord.html', title='Home')

如果访问令牌有任何问题,我的目标是重定向到相应的错误页面404、403、401。

解决方案:

@jwt.unauthorized_loader
def my_invalid_token_callback(expired_token):
    return render_template('401.html', title='Home')

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

以下是Benjo在问题底部发布的解决方案:

@jwt.unauthorized_loader
def my_invalid_token_callback(expired_token):
    return render_template('401.html', title='Home')