You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python解码JWT生成令牌时报错AttributeError: 'str'对象无decode属性

问题产生原因

这个错误是PyJWT库的版本差异导致的:

  • PyJWT 1.x版本中,jwt.encode()方法返回的是bytes类型对象,因此可以调用decode('UTF-8')方法将其转为字符串。
  • PyJWT 2.0及以上版本中,jwt.encode()方法默认直接返回str类型对象,字符串本身没有decode方法,调用时就会触发该属性错误。
解决方案

根据你的实际需求选择对应修正方案:

  • 如果你只是需要得到字符串格式的JWT令牌,直接删除多余的decode操作即可,修正后代码如下:
token = jwt.encode({'public_id': user.public_id, 'exp': datetime.datetime.utcnow() + 
datetime.timedelta(minutes=30)}, app.config['SECRET_KEY'])
# 直接使用encode返回的结果即可,无需decode
decodetoken = token
  • 如果你是需要解析JWT令牌里存储的payload内容,应该使用PyJWT提供的jwt.decode()方法完成解码,不要对encode的返回值做处理,示例代码如下:
# 生成JWT令牌
token = jwt.encode({'public_id': user.public_id, 'exp': datetime.datetime.utcnow() + 
datetime.timedelta(minutes=30)}, app.config['SECRET_KEY'])
# 解码JWT获取payload
decoded_payload = jwt.decode(token, app.config['SECRET_KEY'], algorithms=["HS256"])

注意解码时需要指定签名对应的算法,否则可能触发额外的警告或报错。

内容的提问来源于stack exchange,提问作者Badruzzaman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:06:08