【问题标题】:Flask-JWT generates error when Debug=FalseDebug=False 时 Flask-JWT 生成错误
【发布时间】:2017-01-19 14:22:12
【问题描述】:

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

Debug=True 在 Flask 中,并且我没有发送授权标头时,我得到的响应为

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

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

谢谢

【问题讨论】:

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


    【解决方案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、新鲜与非新鲜令牌等等)。完全公开,我是那个扩展的作者。

    干杯。

    【讨论】:

    • 谢谢。我一定会检查 Flask-JWT-extended。
    猜你喜欢
    • 2015-10-01
    • 2016-03-11
    • 2018-11-24
    • 2021-08-13
    • 2018-03-20
    • 2021-11-05
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多