首页 > 代码库 > Django 修改重置密码并通过邮箱进行验证的思考

Django 修改重置密码并通过邮箱进行验证的思考

修改重置密码处理函数如下,其中包含了邮箱验证保存密码的函数:


在修改和重置两种操作时,本人在POST和GET方法中选择了POST方法,因为比较安全,但是发现在进行邮箱验证保存密码的时候发现save部分接受不到函数。经过排查,发现传入save的参数只能通过GET方法获取,因此修改为都是GET方式。


但经过思考,可以把修改重置函数和邮箱验证保存密码函数进行拆分。从而达到修改重置以POST方式得到参数,而邮箱验证保存密码部分通过GET方式得到参数。


以下代码都是以GET方法获取参数:

from django.shortcuts import render

from django.template import loader,Context

from django.http import HttpResponse

import md5

import time

from PIL import Image

from django.core.mail import send_mail 

from Wiki.models import *

from Wiki.Globals import *


def PasswdSave(request):

    flag="false"

    Set=Global(request)


## save th password ##

    if request.GET.get("type"):

        type=request.GET.get("type")

        if type == "save":

            if request.GET.get("username") and request.GET.get("passwd") and request.GET.get("email"):

                username=request.GET.get("username")

                passwd=request.GET.get("passwd") 

                email=request.GET.get("email")

                user=Set["Users"].get(Username=username)

                if user.Email==email:

                    user.Passwd=passwd

                    user.save()

                    #flag="save_true"

                    flag="<html><body><script>alert(‘the passwd is updated sucess!‘);window.location.href=http://www.mamicode.com/‘/wiki/home‘;</script>"


## reset the password ##

        elif type == "reset":

            if request.GET.get("username") and request.GET.get("email"):

                username=request.GET.get("username")

                email=request.GET.get("email")

                user=Set["Users"].get(Username=username)

                if user.Email==email:            

                    new=str(int(time.time()))

                    newmd5=md5.new(new).hexdigest()

                    message="new password is: "+new+"\n"

                    message+="http://192.168.225.58/wiki/passwdsave?type=save&username="+username+"&email="+email+"&passwd="+newmd5

                    send_mail(u‘Reset Passord‘, message, ‘blast4onekp@163.com‘,[email], fail_silently=False)

                    flag="reset_true"

                else:

                    flag="reset_false"


## change the password ##

        elif type == "change":

            if Check_Login(request):

                if request.GET.get("email") and request.GET.get("passwd") and request.GET.get("new"):

                    email=request.GET.get("email")

                    passwd=request.GET.get("passwd") 

                    new=request.GET.get("new")

                    passwdmd5=md5.new(passwd).hexdigest()

                    newmd5=md5.new(new).hexdigest()

                    if Set["User"].Email==email and Set["User"].Passwd==passwdmd5:

                         message="http://192.168.225.58/wiki/passwdsave?type=save&username="+Set["User"].Username+"&email="+email+"&passwd="+newmd5

                         send_mail(u‘Change Passord‘, message, ‘blast4onekp@163.com‘,[email], fail_silently=False)

                         flag="change_true"

                    else:

                         flag="change_false"

                         #flag=Set["User"].Passwd+"<br>"+passwd

            else:

                flag="login_false"

    return HttpResponse(flag)


Notice:在多次测试该函数时,由于发送了多次验证邮件,出现SMTPRefuseError,原因是因为被SMTP连接的发送邮件服务器认为是恶意发送垃圾邮件。-0-


完。

本文出自 “蓝鳍豚” 博客,请务必保留此出处http://likunheng.blog.51cto.com/9527645/1569904

Django 修改重置密码并通过邮箱进行验证的思考