2

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

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

这显然是正确的消息,而不是显示我想要重定向到 Flask 提供的相应状态码错误页面的 JSON - 在本例中为 401。

  • 我尝试为 Flask 和 JWT Manager 添加错误处理
  • 自定义装饰器,虽然我在这方面表现不佳,因为我相信在 FLASK-JWT-extended 中必须有解决方案
@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')
4

2 回答 2

1

这是 Benjo 在他的问题底部发布的解决方案:

@jwt.unauthorized_loader
def my_invalid_token_callback(expired_token):
    return render_template('401.html', title='Home')
于 2020-04-08T19:25:55.643 回答
0

以下是更改无效令牌结果的文档:https ://flask-jwt-extended.readthedocs.io/en/stable/sharing_default_behavior.html#changeing-callback-functions

于 2019-09-07T16:49:46.503 回答