在python中仅从JWT获取解码的有效载荷

sal*_*iro 11 python jwt

有没有一种很好的方法(可能使用某个库)来仅从保存为字符串变量的 JWT 中获取有效负载?除了手动解析第一个和第二个点之间的内容然后解码。

jps*_*jps 25

PyJWT有一个选项可以在没有验证的情况下解码 JWT

如果没有此选项,该decode函数不仅会解码令牌,还会验证签名,您必须提供匹配的密钥。这当然是推荐的方式。
但是,如果您出于某种原因只想解码有效负载,请将该选项设置verify_signature为 false。

import jwt
key='super-secret'
payload={"id":"1","email":"myemail@gmail.com" }
token = jwt.encode(payload, key)
print (token)
decoded = jwt.decode(token, options={"verify_signature": False}) # works in PyJWT >= v2.0
print (decoded)
print (decoded["email"])

Run Code Online (Sandbox Code Playgroud)

对于 PyJWT < v2.0 使用:

decoded = jwt.decode(token, verify=False)  # works in PyJWT < v2.0
Run Code Online (Sandbox Code Playgroud)

它返回一个字典,以便您可以单独访问每个值:

b'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjEiLCJlbWFpbCI6Im15ZW1haWxAZ21haWwuY29tIn0.ljEqGNGyR36s21NkSfxEdbLvEdb'pbWFpbCI6Im15ZW1haWxAZ21haWwuY29tIn0.

{'id':'1','email':'myemail@gmail.com'}

myemail@gmail.com

注意:还有其他适用于 python 的 JWT 库,这也可能适用于其他库。

  • 这是它的完成方式: jwt.get_unverified_header(token) (5认同)