Django用户注册、邮箱验证实践

算法流程如下:
1)处理用户注册数据,存入数据库,is_activity字段设置为False,用户未认证之前不允许登陆
2)产生token,生成验证连接URL
3)发送验证邮件
4)用户通过认证邮箱点击验证连接,激活is_activity字段,可以登录
5)若验证连接过期,删除用户在数据库中的注册信息。

#系统root邮箱 settings.py

EMAIL_HOST = ‘smtp.qq.com‘
EMAIL_HOST_USER = ‘17********@qq.com‘
#授权码
EMAIL_HOST_PASSWORD = ‘dxsblqtqohiycgcb‘
EMAIL_PORT = 587
EMAIL_USE_TLS = True
#可以域名,可以设置本地
DOMAIN = ‘http://127.0.0.1:8000‘   

#注册相关路由 url.py

url(r‘^register/$‘, reg, name=‘reg‘),
url(r‘^activate/(?P<token>\w+.[-_\w]*\w+.[-_\w]*\w+)/$‘,     activate,name=‘activate‘),

#注册视图函数 user/views.py

def reg(request):
    try:
        if request.method == ‘POST‘:
            print request.method
            register_form = RegForm(request.POST)
            if register_form.is_valid():
                print ‘数据验证通过!‘
                username=register_form.cleaned_data[‘username‘]
                email=register_form.cleaned_data[‘email‘]
                password=register_form.cleaned_data[‘password‘]
                user = UserProfile.objects.create(
                    username=username,
                    email=email,
                    password = password,
               )
                user.save()
                print ‘注册信息保存成功!‘
                # 邮箱验证
                token = token_confirm.generate_validate_token(username)
                token_url = ‘/‘.join([django_settings.DOMAIN, ‘activate‘, token])
                message = "\n".join([u‘{0},欢迎加入XX‘.format(username), u‘请访问该链接,完成用户验证:‘,u"< a href = "+token_url+u" > "+token_url+u" < / a > " ])
                send_mail(u‘注册用户验证信息‘, message, ‘17******@qq.com‘, [email], fail_silently=False)
                return render(request, ‘common/success.html‘, {‘reason‘: u"已将激活链接发送到您的注册邮箱,请登录激活,有效期为1个小时"})
            else:
                return render(request, ‘common/failure.html‘, {‘reason‘: register_form.errors})
        else:
            register_form = RegForm()
    except Exception as e:
        print ‘错误‘,e  

#用户点击邮箱链接,账户激活 user/views.py

def activate(request, token):
    try:
        username = token_confirm.confirm_validate_token(token)
    except:#令牌过期
        username = token_confirm.remove_validate_token(token)
        users = UserProfile.objects.filter(username=username)
        for user in users:
            user.delete()#删除注册用户
        return render(request, ‘common/failure.html‘, {
            ‘reason‘: u‘对不起,验证链接已经过期,请重新<a href=\"‘ + unicode(django_settings.DOMAIN) + u‘/register\">注册</a>‘})
    try:
        user = UserProfile.objects.get(username=username)
    except UserProfile.DoesNotExist:
        return render(request, ‘common/failure.html‘, {‘reason‘: u"对不起,您所验证的用户不存在,请重新注册"})
    user.is_active = True
    user.save()
    message = u‘终于等到你!账号激活成功,可以进行<a href=\"‘ + unicode(django_settings.DOMAIN) + u‘/login\">登录</a>操作‘
    return render(request, ‘common/success.html‘, {‘reason‘: message})

  

参考:https://my.oschina.net/keyven/blog/726123

时间: 2024-10-05 18:27:20

Django用户注册、邮箱验证实践的相关文章

用户注册邮箱验证逻辑

1.数据库增加两个字段:一个存验证码,一个存验证状态 2.用户注册后给邮箱发邮件,地址上带上验证码参数 3.用户点击地址,通过地址获取到验证码,拿这个验证码到数据库查找是否存在 4.如不存在验证失败,如果存在改了验证状态,并重置了验证码,跳转登录页 5.用户再点进来的话给一个友好的页面,说已经验证通过,提醒登陆

ThinkPHP 3.2 用户注册邮箱验证激活帐号

本文将结合实例,讲解如何使用PHP+Mysql完成注册帐号.发送激活邮件.验证激活帐号.处理URL链接过期的功能. 业务流程 1.用户提交注册信息. 2.写入数据库,此时帐号状态未激活. 3.将用户名密码或其他标识字符加密构造成激活识别码(你也可以叫激活码). 4.将构造好的激活识别码组成URL发送到用户提交的邮箱. 5.用户登录邮箱并点击URL,进行激活. 6.验证激活识别码,如果正确则激活帐号. 准备数据表 用户信息表中字段Email很重要,它可以用来验证用户.找回密码.甚至对网站方来说可以

django captcha和邮箱验证机制

验证码插件--django captcha和邮箱验证机制 对于web开发在用户注册登录的环节的验证码是在开发中必不可少的一个环节,这里介绍一下我在开发中经常使用到的一个带三方的验证码插件-- captcha 一.安装 在GitHub上可以直接下载: 也可以使用pip进行安装: 二.导入 1.settings.py文件 这里需要在INSTALLED_APPS中将其注册进去: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.aut

JavaMai——邮箱验证用户注册

这篇文章简单的模拟了网上利用邮箱激活用户注册这样的一个功能 1. 呈现给用户的注册界面:(为了简单起见,就剩下两个输入域,邮箱和昵称) [html] view plain copy print? <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01

JavaMail实现注册邮箱验证案例

在日常生活中,我们在一个网站中注册一个账户时,往往在提交个人信息后,网站还要我们通过手机或邮件来验证,邮件的话大概会是下面这个样子的:用户通过点击链接从而完成注册,然后才能登录. 也许你会想,为什么要这么麻烦直接提交注册不就行了吗?这其中很大一部分原因是为了防止恶意注册.接下来让我们一起来使用最简单的JSP+Servlet的方式来完成一个通过邮箱验证注册的小案例吧. 准备工作前提知识动手实践之前,你最好对以下知识有所了解: (1)JSP和Servlet(2)MySQL(3)c3p0(4)SMTP

C# 注册邮箱验证的实现代码

本文介绍下,C#实现注册用户时,通过邮箱进行验证的思路与代码,有需要的朋友,不妨参考下. 一.思路 1,数据库加两个字,state字段(0:未激活,1:激活成功),ActiCode:(放激活码). 2,用户填写资料,插入数据成功,state字段默认是0,同时生成一个ActiCode也存入数据库. 3,提示用户激活.发送邮件.邮件中带一个激活成功页的URL,URL里有两个参数(1,用户ID,2:激活码). 4,用户点击链接,回到激活成功页.激活成功页的Load事件,得到两个参数,以这两个参数为条件

iOS开发-UITextField手机号和邮箱验证

不管是网页是手机,用户注册登录的时候绝大数时候都需要手机号码和邮箱地址,而且有些App会限制只能使用手机号注册,iOS方面邮箱正则比较简单,不过手机号码验证找了一下网上的,发现三大运营商的号码段有所变化,通过最新的号码段判断用户手机验证的时候出错概率会小,如果有遗漏的号码段,欢迎补充. /*手机验证 */ + (BOOL)isMobileNumber:(NSString *)mobileNum { /** * 手机号码 * 移动:134/135/136/137/138/139/150/151/1

ThinkPHP邮箱验证

Thinkphp用户注册使用邮箱验证的功能实现! 小伙伴平时在用户注册的时候,是否为邮箱验证的功能所困扰,下面思梦PHP就为大家带来了这个案例! 首先数据表的结构为: 思路就是用户注册时候我们使用一个type的字段进行验证,当用户登陆的时候我们用这个字段进项验证,如果为1则是验证成功可登陆,反之则不能登陆,下面九尾大家贴上我们的代码: (1)前端的代码为: 效果为: (2)后台验证的添加的代码为: (3)邮箱效果的图 (4)后台验证代码 (5)数据库的代码示例 (6)验证成功 原文地址:http

JavaScript用户注册信息验证

用户注册信息验证是否正确 一.Javascript方式 二.正则表达式验证 应用正则表达式验证:用户名4-16位,字母开头:用户名4-16位,首字母大写:两次密码是否相同:电话号码11位,并以1开头:出生日期 在register.jsp脚本部分代码如下 <script language="JavaScript" type="text/javascript"> function check() { var name=document.getElementB