博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django使用邮箱进行验证操作的实现方法
阅读量:6975 次
发布时间:2019-06-27

本文共 1938 字,大约阅读时间需要 6 分钟。

上一篇博客简单的说了说Django发送邮件的方法,这一篇仅仅谈一下如何通过邮件的方式进行验证,以重置密码功能为例。

其实验证方法比较简单,只需要发送指定的链接给目标邮箱,用户点击链接即可通过验证,但是合成和验证这个指定的链接需要我们来处理,我用到的方法是,当用户申请邮箱验证的时候根据其邮箱地址和一个32位随机验证码去合成一个连接,当正常访问的使用后台可通过URL获取邮箱名以及验证码,再根据这两个值去数据库中匹配,看能否成功,若是成功则完成验证失败则提示用户链接无效,接下来是具体的实现方法:

首先我们需要建立一张数据库表,其中内容包括:邮箱地址、32位随机验证码、创建时间。

class email_reset(models.Model):    email_address = models.EmailField(null=False,unique=True) #邮箱地址唯一的    vc_code = models.CharField(max_length=64,null=False) #随机验证码    send_time = models.DateTimeField(auto_now=True)  #邮箱发送时间

当用户需要用到邮箱验证的时候,则往数据库中新建一条数据之后在将邮箱地址和随机验证码合成为连接发送给目标

def send_email(email_address):    vc_code = vc_code_generator()    msg = '

重置密码

'\ '
如果不是你本人操作请忽略本消息,本条消息30分钟内有效,如果被禁止跳转请复制链接在浏览器中重新打开
'\ '点击重置密码' % (email_address,vc_code) u = models.email_reset.objects.filter(email_address=email_address).first() if u : models.email_reset.objects.filter(email_address=email_address).update(vc_code= vc_code) else: models.email_reset.objects.create(email_address=email_address,vc_code=vc_code) send_mail('重置密码', '请前往这个网址:localhost:8000/forgetpwd重置密码', "*****管理员<****************@163.com>", [email_address], fail_silently=False, html_message=msg)#生成随机验证码def vc_code_generator(size=32, chars=string.ascii_uppercase + string.ascii_letters + string.digits): return ''.join(random.choice(chars) for _ in range(size))

接下来则是处理URL了,根据之前发送的链接格式我们可以通过GET方式获取到其邮箱地址和验证码,再从数据库中查询是否有从 稍作简单的判断即可知道当前

if request.method == "GET":        email = request.GET.get("email")        code = request.GET.get("code")        if email and code:            if models.email_reset.objects.filter(email_address=email).filter(vc_code=code):                return render(request,'../templates/website/reset.html',{'email':email})            else:                return HttpResponse("

抱歉你访问的网址有误

") else: return HttpResponse("

抱歉你访问的网址有误

")

 

转载于:https://www.cnblogs.com/FanMLei/p/10501019.html

你可能感兴趣的文章
shell技巧之以逆序形式打印行
查看>>
Java面试题集(六)
查看>>
读枯燥的技术书时怎么集中精神?
查看>>
iOS 依据文本内容为TextView动态定义高度
查看>>
CCF系列之ISBN号码(201312-2)
查看>>
SQL Server 内存使用量下降问题
查看>>
问题MySQL server has gone away
查看>>
iOS的Cookie存取看我绝对够!!
查看>>
azkaban 安装
查看>>
GIX4中懒加载
查看>>
tomcat排错过程
查看>>
virus.win32.parite.h病毒查杀
查看>>
【初級篇】华为NAT技术(静态NAT)
查看>>
Android telephony MMS 学习笔记
查看>>
LVM动态扩容、缩减
查看>>
winform 窗体关闭事件
查看>>
socket编程
查看>>
MySQL 表空间管理
查看>>
我的友情链接
查看>>
Spring Boot 应用教程
查看>>