簡體   English   中英

我應該如何處理@jwt_required裝飾器中引發的異常? (在flask-jwt-extended中)

[英]How should I handle exceptions raised in @jwt_required decorator? (in flask-jwt-extended)

我有一個@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錯誤。 我應該如何更優雅地處理異常?

Flask-jwt-extended應該可以為您優雅地處理它們。 如果沒有,您可能正在使用另一個擴展(例如,flask-restful)破壞了本地flask的功能。 您可以嘗試設置此選項來修復它app.config['PROPAGATE_EXCEPTIONS'] = True ,如果您使用的是引起問題的https://github.com/ vimalloc /燒瓶-JWT擴展/問題/ 86

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM