对数据进行加密
在Django中进行加密可以直接调用django配置文件中的SECRET_KEY , 同时还需要导入itsdangerous模块中的TimedJSONWebSignatureSerializer进行加密
1. 实现加密方法 , 生成用户加密链接
# 生成用户加密链接
def generate_verify_email_url(user):
# 调研加密方法
s = TJ(settings.SECRET_KEY , 600) # 加密方法 , 有效时间
data = {
'id' : user.id,
'email' : user.email
}
# 进行加密
token = s.dumps(data)
# 获得加密链接
token_url = settings.EMAIL_VERIFY_URL + "?token=" + token.decode()
return token_url
3. 校验加密信息
def check_verify_email_url(token):
# 对链接进行解密
s = TJ(settings.SECRET_KEY , 600)
data = s.loads(token)
user_id = data.get('user_id')
email = data.get('email')
# 从数据库中获取邮箱 , 使用try语句防止查询报错
try:
user = User.objects.get(id=user_id ,email=email)
except:
return None
else:
return user
三. 校验用户请求
当用户点击邮箱发送的链接会像服务器发送一个请求
# 校验邮箱信息
class VerifyEmailView(View):
def get(self , request):
token = request.GET.get('token')
if not token:
return HttpResponseForbidden('缺少必要参数')
user = check_verify_email_url(token)
if not user:
return HttpResponseForbidden("用户不存在")
# 盘带你邮箱是否验证码
if user.email_active == 0:
# 邮箱没有验证
user.email_active = 1
user.save()
return redirect('user_info_center')
else:
return HttpResponseForbidden("该邮箱已经注册")
创建视图
# 验证邮箱
path('verification/' , views.VerifyEmailView.as_view() ),