修改重置密码处理函数如下,其中包含了邮箱验证保存密码的函数:
在修改和重置两种操作时,本人在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=‘/wiki/home‘;</script></body></html>"
## 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
原文地址:http://likunheng.blog.51cto.com/9527645/1569904