【问题标题】:@JWT_Required decorator Exception Handling@JWT_Required 装饰器异常处理
【发布时间】:2020-01-10 03:03:52
【问题描述】:

我正在使用一个使用 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')

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 感谢您的帮助。我较早地找到了文档的那部分并玩弄了它。但是我找不到合适的。 @JWT_requried 可以使用哪一个?
      • 感谢您的建议。找到了正确的:@jwt.unauthorized_loader def my_invalid_token_callback(expired_token): #token_type = expired_token['type'] ''' return jsonify({ 'status': 401, 'sub_status': 42, 'msg': 'The { } token 已过期'.format(token_type) }), 401 ''' return render_template('401.html', title='Home')
      猜你喜欢
      • 2019-07-06
      • 2016-12-14
      • 2017-09-20
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 2022-01-05
      • 2012-03-27
      • 2019-05-13
      相关资源
      最近更新 更多