Flask-JWT 当 Debug=False 时产生错误

Flask-JWT generates error when Debug=False

我正在玩 Flask。我使用 Flask-Restful 和 Flask-JWT 创建了一个 API。

Debug=True 在 Flask 中时,我没有发送授权 Header,我得到的响应是

但是,当 debug=False 时,返回的响应是带有此堆栈跟踪的内部服务器错误,

[2017-01-19 19:43:10,753] ERROR in app: Exception on /api_0_1/deals [GET]
Traceback (most recent call last):
  File "C:\Users\ARFATS~1\Desktop\Dealflow\venv\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\ARFATS~1\Desktop\Dealflow\venv\lib\site-packages\flask\app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\ARFATS~1\Desktop\Dealflow\venv\lib\site-packages\flask_restful\__init__.py", line 477, in wrapper
    resp = resource(*args, **kwargs)
  File "C:\Users\ARFATS~1\Desktop\Dealflow\venv\lib\site-packages\flask_jwt\__init__.py", line 176, in decorator
    _jwt_required(realm or current_app.config['JWT_DEFAULT_REALM'])
  File "C:\Users\ARFATS~1\Desktop\Dealflow\venv\lib\site-packages\flask_jwt\__init__.py", line 155, in _jwt_required
    headers={'WWW-Authenticate': 'JWT realm="%s"' % realm})
JWTError: Authorization Required. Request does not contain an access token


我希望 Flask-JWT 响应 Debug=True 时的响应。但是,我不能在生产服务器上使用调试。

一种方法是使用我自己的 jwt_required 装饰器。还有其他方法吗?

此外,如果有的话,我很乐意知道我缺少什么。

谢谢

您需要将此设置添加到您的 Flask 应用中:

app.config['PROPAGATE_EXCEPTIONS'] = True

当 debug 为真时,PROPAGATE_EXCEPTIONS 默认也设置为真。

也许考虑查看 flask-jwt-extended 而不是 (https://github.com/vimalloc/flask-jwt-extended),它会为您处理 PROPAGATE_EXCEPTIONS。它旨在取代废弃的 flask-jwt 库,并在使用 JWT 时添加一些便利(例如刷新令牌、轻松向 JWT 添加自定义数据、新鲜与 non-fresh 令牌等)。完全披露,我是该扩展程序的作者。

干杯。