对数据进行加密
在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() ),