激活链接加密

背景

  • 解决问题:当我们决定使用邮箱验证的时候,如果此时直接使用明显的数据,则不够安全,因此引入链接加密的概念
  • 使用模块:itsdangerous
  • 参考文档:http://itsdangerous.readthedocs.io/

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 加密的时候需要用到该包
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
# 引入异常
from itsdangerous import SignatureExpired, BadSignature
# 加密的时候需要用到密钥,此处我们使用settings.py文件中
# 这个settings对应的就是项目目录下的settings.py文件
from django.conf import settings

# 通过创建TimedJSONWebSignatureSerializer对象,
# 第一个参数为加密的密钥,自己随便设,第二个参数是该加密的过期时间为1小时
serializer = Serializer(settings.SECRET_KEY, 3600)

# 加密用dumps,解密用loads,加密时是什么数据类型,解密的时候就会得到什么数据类型
# 加密的返回值是加密后的字符串,是一个bytes类型的值,还需要编码
secret = serializer.dumps({"confirmID": new_user.id})
# 加密的时候,其实已经将过期时间放入了进去
secret.decode()

# 解密的返回值是加密之前的数据本身,就是加密的字典值
# 超时解密会引发异常:itsdangerous.exc.SignatureExpired: Signature expired
# 当用户发送异常token时引发异常:itsdangerous.exc.BadSignature: Signature *** do not match
data = serializer.loads(secret)