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 令牌等)。完全披露,我是该扩展程序的作者。
干杯。
我正在玩 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 令牌等)。完全披露,我是该扩展程序的作者。
干杯。