【Django】使用itsdangerous加密json数据生成token

有时候我们需要把一些信息传给前端,之后前端再传回来,若是遇到敏感信息就会被暴露,所以我们需要把它加密成一个token,待前端传回来的时候再进行解密。我们可以使用itsdangerous这个模块进行加密和解密操作

1.安装itsdangerous

pip install itsdangerous

2.简单使用

其实itsdangerous的用法有多种,我们这里只用给JSON加解密的方法,需要用到TimedJSONWebSignatureSerializer类的dumps()和loads()方法

from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
# 传入秘钥和有效期(秒)
serializer = Serializer('abcd',300)  
token = serializer.dumps({
    
    'mobole':'13978488888'}).decode()
print(token)  # 结果:eyJpYXQiOjE1OTk4MDEzNjEsImFsZyI6IkhTNTEyIiwiZXhwIjoxNTk5...

# serializer = Serializer('1234',300)  假如传入的秘钥不正确就会报错
try:
    data = serializer.loads(token)
    print(data)  # 结果:{'mobole': '13978488888'}
except Exception as e:
    print('解密失败')
    

3.封装成类

封装的好处就是方便调用,使代码业务代码更加简洁,我们这里简单封装一下

from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from django.conf import settings


class SecretOauth(object):
    def __init__(self):
        # self.serializer = Serializer(secret_key='abcd',expires_in=300)

        # 这里使用django配置文件里提供的秘钥
        self.serializer = Serializer(secret_key=settings.SECRET_KEY,expires_in=300)

    # 加密
    def dumps(self,content_dict):
        token = self.serializer.dumps(content_dict).decode()
        return token

    # 解密
    def loads(self,token):
        try:
            content_dict = self.serializer.loads(token)
        except Exception as e:
            return None
        return content_dict

if __name__ == '__main__':

    res = SecretOauth().dumps(content_dict={
    
    'mobile':'13978488888'})
    print('加密后:', res)
    res2 = SecretOauth().loads(res)
    print('解密后:', res2)
    print(res2.get('mobile'))

猜你喜欢

转载自blog.csdn.net/qq_39147299/article/details/108532467
今日推荐