发送找回密码邮件这个功能,在别的网站上经常用到,乍看上去,好像 没什么难度的样子,但是我做的时候还是考虑了一些问题,因为见得少,所以主要 考虑的还是如果该链接泄露了咋办。
我用了3个字段去记录这个过程:
status: 0:正常状态; 1:密码重置中。
opTime: 发送重置邮件的时间。
ip: 记录请求操作时的用户ip。
1.当用户忘记密码时,需要输入在网站注册时的用户名和邮箱,提交后,后台判断该用户是否存在,如果存在,将status=1;同时记录当前时间和ip;向用户发送激活邮件,
url格式类似:http://demo.com/findpwd?v=userName&v2=time (userName和time都是经过BASE64编码过)
2.用户登录邮箱,点击重置链接,网站后台将通过链接中的userName和time的值去进行判断。通过userName判断该用户是否存在,如果存在,查看该用户的status是不是1,然后对比三个时间,一个是数据库中的opTime,一个是系统当前时间,一个是url传过来的time,最后,对比当前用户ip和数据库中存储的ip是否相同,通过这三个条件,保证该链接没有被盗用。