python jwt token使用
官网 https://pyjwt.readthedocs.io/en/latest/index.html
# 官网 https://pyjwt.readthedocs.io/en/latest/index.html # 我们在jwt.encode函数中使用了三个参数: # 1)第一个是payload,主要用来存放有效的信息,例如用户名,过期时间等想要传递的信息。payload字典内部官方指定有指定key, # 如exp用来指定token的生命周期。更多指定key参数可参考这里; # 2)第二个key,一个秘钥字串,这个秘钥主要用在下文Signature签名中,服务端用来校验Token合法性,这个秘钥仅服务端知道,不能泄露。 # 3)第三个参数指定Signature签名所用的算法。 import time import jwt from datetime import datetime, timedelta key1 = "123456" key2 = "12345" payload = { 'exp': datetime.now() + timedelta(seconds=2), # 令牌过期时间,本地时间 'username': 'BigFish' # 想要传递的信息,如用户名ID } print("期望结果:", payload) e1 = jwt.encode(payload, key1, algorithm='HS256') print(e1) d1 = jwt.decode(e1, key1, algorithms='HS256') print("解析的结果中exp是时间戳:", d1) # 转换后发现时间和期望结果相差8个小时,如果要验证token有效期,需要减去8个小时的时间戳28800 if d1.get("exp") - 28800 > time.time(): print("token在有效期内") else: print("token已过期") # e2 = jwt.encode(payload, key2, algorithm='HS256') # print(e2) # # 直接报错,签名验证失败,不能用key2秘钥加密后用key1去解析 # d2 = jwt.decode(e2, key1, algorithms='HS256') # print(d2)
一个只会点点点的测试,有疑问可以在测试群(群号:330405140)问我