我得到 jwt.exceptions.DecodeError: Invalid header padding

Posted

技术标签:

【中文标题】我得到 jwt.exceptions.DecodeError: Invalid header padding【英文标题】:I get jwt.exceptions.DecodeError: Invalid header padding 【发布时间】:2020-11-04 00:33:57 【问题描述】:

所以我有一个简单的烧瓶应用程序。 登录创建一个令牌:

token = jwt.encode('user': token_data, app.config['SECRET_KEY']).decode('utf-8')

中间件如下所示:

def token_required(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        data = request.headers['Authorization'].encode('ascii', 'ignore')
        token = str.replace(str(data), 'Bearer ', '')
        if not token:
            return jsonify('message': 'Token is missing'), 401
        data = jwt.decode(token, app.config['SECRET_KEY'], algorithms=['HS256'])['sub']
        return f(*args, **kwargs)

    return decorated

然后我运行 @token_required 的受保护路由并得到错误。 jwt.exceptions.DecodeError: Invalid header padding

无法将另一个 utf-8 添加到中间件令牌,因为我无法将它与 str 一起使用 我能做什么?

【问题讨论】:

你是不是在 jwt 编码的第一个 arg 上缺少一个右括号? 不,这是一个错字,对不起,我的原始代码中有它。 为什么您的令牌在创建过程中被解码? 需要使用 utf-8 解码。它可以放在中间件中,也可以放在创建过程中。由于我的令牌是中间件中的 str 类型,我无法使用 utf-8 对其进行解码 【参考方案1】:

所以我删除了.encode('ascii', 'ignore') 还有['sub'],它似乎有效

【讨论】:

以上是关于我得到 jwt.exceptions.DecodeError: Invalid header padding的主要内容,如果未能解决你的问题,请参考以下文章

为啥我得到分段(核心转储)?

没有从服务器得到任何响应,但能够从 telnet 得到响应

为啥我得到一个 nullPointerException? [复制]

百度地图中如何由输入的信息得到所在城市,由我输入的地点,得到我所在的城市,百度API有方法吗

为啥我不能从数组中得到正确的日期?

不知道我从哪里得到 NoSuchMethodError: '[]'