【web求助"找回密码?"功能实现】新浪邮箱找密码怎么实现?

双人鱼XKQ 发布于 2013/12/22 11:04
阅读 2K+
收藏 5

点击发送验证邮件,新浪会给你发送一封邮件,里面有个验证码,你输入验证码之后,就可以进行重置新的密码了,而且这个验证码在30分钟之内是有效的。

我的思路是将这个验证码随机产生,然后存储到session中去,然后发送邮件,最后输入的时候在和这里的进行比对,感觉和验证码的原理差不多啊!
加载中
1
张乐1024
张乐1024

技术小白一枚,说说自己的看法,见笑。

服务器有一个临时表,保存用户对应的重置密码申请,有唯一标识(用户名或邮箱)。根据唯一标识查询对应用户名中是否有30分钟内,未使用的重置密码申请验证码(在发送时,随机生成,保存临时表并发送邮件)。然后在确认验证码的时候,去后台验证一下就OK了。

双人鱼XKQ
双人鱼XKQ
您好,谢谢您的回答,但是还是有点不解需要您指点,就是说怎么判断是30分钟内呢?数据库表怎么创建呢?而且还会让他过期以后可以删除呢?本人只创建过那种简单的表,没有创建过能够过期删除的表,望不吝赐教!
双人鱼XKQ
双人鱼XKQ
回复 @张贵成 :您好,谢谢您的回答,但是还是有点不解需要您指点,就是说怎么判断是30分钟内呢?数据库表怎么创建呢?而且还会让他过期以后可以删除呢?本人只创建过那种简单的表,没有创建过能够过期删除的表,望不吝赐教!
张乐1024
张乐1024
回复 @leo108 : 我的临时表指的是一个普通表,只不过里面的数据都是临时的,过期以后可以删除的内种。里面只需要缓存一下可用的验证码便可!
leo108
leo108
就是普通表,不要加“临时”
1
张乐1024
张乐1024
字段大致有主键,验证码,对应的账号(或唯一的邮箱),生成时间(每次判断当前时间是否超过30分钟,超过自动删除本记录)。然后再加一个后台任务定时(或是每天)清除垃圾数据,这样就OK了哇。还有什么木有说到的咩?
0
双人鱼XKQ
双人鱼XKQ
使用的数据库是Mysql数据库。
0
no_way
no_way

两个字段 生成的验证码 和 生成的时间,如果验证就匹配。

如果正常登陆就删除这两个字段。

no_way
no_way
回复 @双人鱼XKQ : 如果是字段就为空,如果是一个数据,就删除。
双人鱼XKQ
双人鱼XKQ
如果验证就匹配。 如果正常登陆就删除这两个字段。 这两句话有点不懂,望详细解释一下,谢谢!
0
你来打我呀
你来打我呀

放在数据库里,在数据库里弄


你来打我呀
你来打我呀
回复 @双人鱼XKQ : 邮箱、验证码、失效时间放在数据库里,用户输入后再从数据库里比对啊
双人鱼XKQ
双人鱼XKQ
回复 @hanzhankang : 小白一个,望耐心指点,感激不尽!定虚心求教。说个详细的思路,谢谢!
你来打我呀
你来打我呀
@双人鱼XKQ 需要啥字段设计啊,这个很简单啊
双人鱼XKQ
双人鱼XKQ
我知道是放在数据库里面弄,具体的是在数据库里面怎么弄?
0
欣儿
欣儿
邮箱,验证码,生成时间。来验证是,用当前时间和生成时间对比,看时间是否超过30分钟,验证码对不对,对就更改验证信息为通过,并且删除验证的数据。大概简单的就这样。还有可以用k v缓存,就不需要用数据库
0
NotFoundException
NotFoundException
放在缓存中就好了,设置缓存时间 ,就可以了。
0
OSC首席键客
OSC首席键客

那种用验证码可以,用一次性url也可以的。

不知道一次性url+验证码会不会更好点?

0
lateron
lateron
点击找回密码,后台生成随机字符串,以邮箱为key,随机字符串为value存到memcache,memcache失效时间设置为30分钟,此时异步发送邮件,邮件地址中包含邮箱和随机字符串。当访问邮箱中的url时,我们去校验是否匹配,如果匹配,则可以跳转到修改密码页面。
0
张乐1024
张乐1024

引用来自“张贵成”的评论

技术小白一枚,说说自己的看法,见笑。

服务器有一个临时表,保存用户对应的重置密码申请,有唯一标识(用户名或邮箱)。根据唯一标识查询对应用户名中是否有30分钟内,未使用的重置密码申请验证码(在发送时,随机生成,保存临时表并发送邮件)。然后在确认验证码的时候,去后台验证一下就OK了。

这个简单呀,临时表里面有个字段就是生成时间,然后用户界面输入验证码点击提交的时候,根据当前时间与临时表内的生成时间做对比,如果超过30分钟,给予提示,未超过30分钟,通过验证。至于过期删除,这个只能人为触发,例如每隔半小时去检索一下临时表的生成时间+30分钟<当前时间的,如果有则删除。表内的字段我能想到的大致有几个:主键、用户ID、验证码、生成时间、状态(用于标注该条记录是否已使用,如果是设计的用完一次直接删除的话,就不用这个字段了)、还有一些其他的,例如邮箱、申请人IP这些不重要的。
返回顶部
顶部