我有一个带有@jwt_required装饰器的函数。
class Test(Resource):
@jwt_required
def get(self):
return {"test": "ok" }
设置了正确的HTTP标头后,哪个可以正常工作
Authentication: Bearer [TOKEN]
但是当令牌无效/错误或混乱时,会引发jwt.exceptions.DecodeError:
File "env/lib/python3.6/site-packages/flask_restplus/resource.py", line 44, in dispatch_request
resp = meth(*args, **kwargs)
File "env/lib/python3.6/site-packages/flask_jwt_extended/view_decorators.py", line 103, in wrapper
verify_jwt_in_request()
File "env/lib/python3.6/site-packages/flask_jwt_extended/view_decorators.py", line 32, in verify_jwt_in_request
jwt_data = _decode_jwt_from_request(request_type='access')
File "env/lib/python3.6/site-packages/flask_jwt_extended/view_decorators.py", line 267, in _decode_jwt_from_request
decoded_token = decode_token(encoded_token, csrf_token)
File "env/lib/python3.6/site-packages/flask_jwt_extended/utils.py", line 80, in decode_token
encoded_token, verify=False, algorithms=config.algorithm
File "env/lib/python3.6/site-packages/jwt/api_jwt.py", line 84, in decode
payload, _, _, _ = self._load(jwt)
File "env/lib/python3.6/site-packages/jwt/api_jws.py", line 183, in _load
raise DecodeError('Not enough segments')
jwt.exceptions.DecodeError: Not enough segments
我不能一直依赖客户端使用正确的令牌。 而且我无法捕获异常,因为它是在装饰器中而不是我自己的函数中引发的。因此结果是http 500错误。我应该如何更优雅地处理该异常?
答案 0 :(得分:0)
Flask-jwt-extended应该可以为您优雅地处理这些。如果没有,您可能正在使用另一个扩展(例如,flask-restful)破坏了本地flask的功能。您可以尝试设置此选项以对其进行修复(/home/user/caffe-master/python)
,或者如果您使用的是引起问题的https://github.com/vimalloc/flask-jwt-extended/issues/86