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安全序列化)
posted @ 2020-06-02 21:13  木林森__𣛧  阅读(411)  评论(0)    收藏  举报