itsdangerous
itsdangerous
1. 简介
它常用于url参数加密解密。
1.1. 安装
pip install itsdangerous
2. 使用
2.1. TimedJSONWebSignatureSerializer
有过期时间的签名,过期后解密会报错。
过期时间并不会影响加密和解密,但建议加密和解密实例使用相同过期时间或使用同一实例。
# itsdangerous测试
import time
from itsdangerous import TimedJSONWebSignatureSerializer as Serialzier
from itsdangerous import SignatureExpired, BadSignature
def generate_confirm_token(key='secret key', expiration_in=300):
# 实例化
# 参数一为任意字符串,一般用flask的secret key
# 参数二为过期时间
s = Serialzier(key, expiration_in)
# 要加密的数据
data = {'id': '123'}
# 加密并解码为str
return s.dumps(data).decode()
def read_confirm_token(token, key='secret key', expiration_in=300):
s = Serialzier('secret key')
try:
data = s.loads(token.encode('utf-8'))
except SignatureExpired:
raise SignatureExpired('令牌已过期')
except BadSignature:
raise BadSignature("令牌不合法")
else:
print(data)
if data.get('id') == "123":
return True
else:
return False
token = generate_confirm_token(expiration_in=5)
print("加密后的参数:", token)
time.sleep(6)
res = read_confirm_token(token, expiration_in=5)
print(res)
输出:itsdangerous.exc.BadSignature: 令牌不合法
2.2. 其它
模块还有一些其它的加密方式,此处略过。
- JSONWebSignatureSerializer(加salt的签名)
- Signing With Timestamps (带时间戳的签名)
- URL Safe Serialization (URL安全序列化)
日拱一卒无有尽,功不唐捐终入海

浙公网安备 33010602011771号