[py][mx]django通过邮箱找回密码

忘记密码处理流程

直接上代码

class ActiveView(View):  # 主要功能是修改user_profile里的is_active字段为1
    def get(self, request, active_code):
        all_reocrds = EmailVerifyRecord.objects.filter(code=active_code)
        if all_reocrds:
            for record in all_reocrds:
                email = record.email
                user = UserProfile.objects.get(email=email)
                user.is_active = True
                user.save()
        else:  # 如果激活链接不存在,则返回激活失败
            return render(request, "active_faild.html")
        return render(request, 'login.html')

class ForgetPwdView(View):
    def get(self, request):
        forget_form = ForgetPwdForm()  # 返回验证码form
        return render(request, 'forget_pwd.html', {'forget_form': forget_form})

    def post(self, request):
        forget_form = ForgetPwdForm(request.POST)
        if forget_form.is_valid():  # 验证email是否有效
            email = request.POST.get('email', '')
            if UserProfile.objects.get(email=email):  # 判断用户是否存在,然后发邮件
                send_register_email(email, "forget")
                return HttpResponse("重置密码链接已发送到您的邮箱,请查收后点击重置.")
            else:
                return render(request, 'forget_pwd.html', {'msg': '用户不存在', 'forget_form': forget_form})

class ResetPwdView(View):
    def get(self, request, active_code):
        all_reocrds = EmailVerifyRecord.objects.filter(code=active_code)
        if all_reocrds:  # 如果链接有效
            for record in all_reocrds:
                email = record.email  # 得到email, emailsendrecord表中有对应的
                return render(request, 'reset_password.html', {'email': email})  # 将email带回, post到这个view: modify_pwd
        else:
            return HttpResponse("链接已失效...")

# ResetPwdView的post独立到ModifyPwdView里, 因为ResetPwdView post地址不好获取code
class ModifyPwdView(View):
    def post(self, request):
        modify_form = ModifyPwdForm(request.POST)
        if modify_form.is_valid():
            pwd1 = request.POST.get('password1', '')
            pwd2 = request.POST.get('password2', '')
            email = request.POST.get('email', '')#取出email,定位哪个用户
            if pwd1 != pwd2:  # 如果密码不一致, 则返回
                return render(request, 'reset_password.html', {'msg': '密码不一致', 'email': email})
            user = UserProfile.objects.get(email=email)
            user.password = make_password(pwd2)
            user.save()
            return render(request, 'login.html')
        else:
            email = request.POST.get('email', '')
            return render(request, 'reset_password.html', {'email': email, 'modify_form': modify_form})

处理逻辑

原文地址:https://www.cnblogs.com/iiiiiher/p/8408836.html

时间: 2024-07-29 18:30:23

[py][mx]django通过邮箱找回密码的相关文章

给自己项目添加注册、登陆、改密码、邮箱找回密码等功能,出现大坑!

1.使用django验证框架的登陆.注销功能,必须settings设置如下: LOGIN_REDIRECT_URL = 'shop:product_list' LOGOUT_REDIRECT_URL = 'shop:product_list' LOGIN_URL = 'shop:login' LOGOUT_URL = 'shop:logout' LOGIN_REDIRECT_URL = 'shop:product_list'-----------登录成功后,转到哪个页面的url,在此设置. LO

php通过邮箱找回密码

很久没有写过博客了,现在我要重新开始记录,工作中遇到的一些问题,并将其记录下来最为经验的积累. --------------------回归正题----------------------- 很多网站,只要有用户注册,就必然会遇到用户登陆时忘记密码的情况,常用的找回密码的方式有两种,一种是通过发送短信验证码,另一种是通过发送连接到邮箱,打开连接通过验证后跳转到重置密码界面. 短信认证的方法,之前写过一篇jsp版本的.通过短信找回密码. 思路十分简单,通过随机生成6位字符验证码,然后将其写入数据库

AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码

AspNetCore - MVC实战系列目录 . 爱留图网站诞生 . AspNetCore - MVC实战系列(一)之Sqlserver表映射实体模型 . AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码 开篇唠嗑 本篇内容写在5.1假期前夕,主要是让大家能在节假日休息充点的时候能有好的干货例子,到目前为止netcore方面的实战例子分享即将进入正轨,谢谢各位朋友多多支持:最近工作安排的新项目即将开始,项目前期就我一人搭建,让我犹豫的是对于公司这个内部系统并且是初建的项目用什么开

[py][mx]django自定义认证类

创建自定义验证用户名密码类CustomBackend users/views.py from django.contrib.auth import authenticate, login from django.contrib.auth.backends import ModelBackend from django.shortcuts import render # Create your views here. from users.models import UserProfile cla

Java实现邮箱找回密码

[来源网络:http://www.cnblogs.com/zyw-205520/p/3738439.html] 通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 2.参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url.

Java实现邮箱找回密码 --转载

通过邮件找回密码功能的实现 1.最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 2.参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url 邮箱 3.加密能防止

简述邮箱找回密码功能

1. 在登录页面给个链接,在找回密码界面可以输入邮箱地址和验证码,验证码是为了防止恶意找回: 2. 后台,首先判断验证码是否正确,再判断该邮箱是否注册过用户; 3. 如果该邮箱存在,检索出该用户信息; 4. 如果你的密码没有MD5加密的话,可以直接查询出密码,如果MD5加密了,只能重新生成一个密码,并修改该用户: 5. 将新生成的密码发送到用户邮箱里,用JavaMail发送邮件;

[py][mx]django处理登录逻辑

处理登录逻辑 users/views.py from django.contrib.auth import authenticate, login def user_login(request): if request.method == "POST": user_name = request.POST.get("username", "") pass_word = request.POST.get("password", &

[py][mx]django使用class写views-免去判断方法的烦恼

修改views使用class模式 类模式写views - 免去了函数模式的判断的烦恼 users/views.py from django.views.generic import View class UserView(View):#继承了View类,它里面实现get post等方法, 使用类模式写免去了函数模式的判断 def get(self, request): return render(request, "login.html", {}) def post(self, req