This is my Blog!!Welcome to you!!
【分享个人java学习心得和技术问题汇总】

Java实现邮箱找回密码

通过邮件找回密码功能的实现

1、最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回。现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回。通过java发送邮件的功能我就不说了,重点讲找回密码。

 

2、参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面}

重点就是如何生成这个url和如何解析这个url.
需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url 邮箱

 

3、加密能防止伪造攻击,一次url只能验证一次,并且绑定了用户。生成url:   可以用UUID生成随机密钥。

数字签名 = MD5(用户名+’++’+密钥key)
数据库字段(用户名(主键),密钥key,过期时间)
url参数(用户名,数字签名) ,密钥key的生成:在每一个用户找回密码时候为这个用户生成一个密钥key ,

 

url example:http://www.wechat68.com:80/CardSSHOK/checkLink?sid=K3xHOi4o/UihH5QYWBDfYA==&userName=123

 

生成过期时间,生成数字签名,生成url,发送邮件.   AddU(用户名,密钥key,过期时间)

 

使用到的数据库如下

 

复制代码

补充1:Timestamp类型对象在保存到数据的时候 毫秒精度会丢失。比如:2014-05-20 10:30:10.234  存到mysql数据库的时候 变成 2013-05-20 10:30:10.0。时间变得不相同了,sid 匹配的时候不会相等。 所以我做了忽略精度的操作。

补充2:解决linux下面title中文乱码

 

补充3:怎么不直接把sid插入到users表呢。验证的时候直接比较sid就ok了。

不要让昨天的沮丧 让今天的梦想安然失色
写的很好啊 。。转转 。。。
http://www.cnblogs.com/zyw-205520/p/3738439.html

未经允许不得转载:Java学习 » Java实现邮箱找回密码

分享到:更多 ()