1

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

Debug=TrueFlask 中,并且我不发送授权标头时,我得到的响应为但是,当返回的响应是带有此堆栈跟踪的内部服务器错误时,在此处输入图像描述

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

另外,如果有的话,我很高兴知道我缺少什么。

谢谢

4

1 回答 1

1

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

app.config['PROPAGATE_EXCEPTIONS'] = True

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

也许考虑改为检查 flask-jwt-extended ( https://github.com/vimalloc/flask-jwt-extended ),它会为您处理 PROPAGATE_EXCEPTIONS。它旨在替换废弃的 flask-jwt 库,并在使用 JWT 时添加一些便利(例如刷新令牌、轻松将自定义数据添加到 JWT、新鲜与非新鲜令牌等等)。完全公开,我是那个扩展的作者。

干杯。

于 2017-01-19T16:08:01.377 回答