当Debug = False时,Flask-JWT会生成错误

时间:2017-01-19 14:22:12

标签: python-2.7 flask flask-restful flask-jwt

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

当我在Flask中Debug=True,并且我没有发送授权标题时,我收到的答复为enter image description here

但是,{{3}}时debug=False 1}},返回的响应是具有此堆栈跟踪的内部服务器错误,

[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装饰器。还有其他方法吗?

另外,如果有的话,我很乐意知道我失踪了什么。

谢谢

1 个答案:

答案 0 :(得分:0)

您需要将此设置添加到烧瓶应用中:

{
    firstname: 'john',
    lastname: 'smith',
    arg: 'jobtitle',
    value: 'brewer'
}

当debug为true时,默认情况下PROPAGATE_EXCEPTIONS也设置为true。

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

干杯。