11
回答
【web求助"找回密码?"功能实现】新浪邮箱找密码怎么实现?
华为云实践训练营,热门技术免费实践!>>>   

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

我的思路是将这个验证码随机产生,然后存储到session中去,然后发送邮件,最后输入的时候在和这里的进行比对,感觉和验证码的原理差不多啊!
举报
双人鱼XKQ
发帖于4年前 11回/1K+阅
共有11个答案 最后回答: 2年前

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

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

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

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

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

--- 共有 2 条评论 ---
no_way回复 @双人鱼XKQ : 如果是字段就为空,如果是一个数据,就删除。 4年前 回复
双人鱼XKQ如果验证就匹配。 如果正常登陆就删除这两个字段。 这两句话有点不懂,望详细解释一下,谢谢! 4年前 回复

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


--- 共有 4 条评论 ---
hanzhankang回复 @双人鱼XKQ : 邮箱、验证码、失效时间放在数据库里,用户输入后再从数据库里比对啊 4年前 回复
双人鱼XKQ回复 @hanzhankang : 小白一个,望耐心指点,感激不尽!定虚心求教。说个详细的思路,谢谢! 4年前 回复
hanzhankang@双人鱼XKQ 需要啥字段设计啊,这个很简单啊 4年前 回复
双人鱼XKQ我知道是放在数据库里面弄,具体的是在数据库里面怎么弄? 4年前 回复
邮箱,验证码,生成时间。来验证是,用当前时间和生成时间对比,看时间是否超过30分钟,验证码对不对,对就更改验证信息为通过,并且删除验证的数据。大概简单的就这样。还有可以用k v缓存,就不需要用数据库
点击找回密码,后台生成随机字符串,以邮箱为key,随机字符串为value存到memcache,memcache失效时间设置为30分钟,此时异步发送邮件,邮件地址中包含邮箱和随机字符串。当访问邮箱中的url时,我们去校验是否匹配,如果匹配,则可以跳转到修改密码页面。

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

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

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

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