最近要开发个功能邮箱找回密码的功能。
大致思路就是发送邮件→连接邮件里的URL→修改密码
重点就是如何生成这个url和如何解析这个url.
需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url
是有效的
初步想法这个url有3个参数:用户名,过期时间,数字签名.
数字签名 = MD5(用户名+'$'+过期时间+密钥key)
解析这个url的时候先验证数字签名,在验证过期时间。
这个方法的弊端在于如果谁知道密钥key,就能修改任意用户密码。
为了保证这个密钥key的安全性,密钥key在应用每次启动的时候随机生成。
,还剩一个问题,就是一个url只能修改一次密码。
这样的话就需要每次修改完这个密码以后,给做一个标记(在内存中保存用户名,
过期时间,数字签名),然后现在每次解析url的时候先验证签名,
然后验证该url是否修改过密码,最后验证过期时间。
内存里的标记在超过过期时间以后是需要清除的。需要做一个定时任务一天清除以下内存里的
过期标记。好象这样就差不多拉。
然后开始开发,开发完以后本机跑的没啥问题。
忽然发现一个问题,生产环境下是多个应用的集群环境,这样的话多个应用随机生成的
密钥key是不一样的。
那这样密钥key的生成后,只有放到数据库比较好拉。
最后的方案:
数字签名 = MD5(用户名+'$'+过期时间+密钥key)
数据库字段(用户名(主键),密钥key,过期时间)
url参数(用户名,数字签名)
密钥key的生成:在每一个用户找回密码时候为这个用户生成一个密钥key
然后生成过期时间,生成数字签名,生成url,发送邮件.
saveOrUpdate(用户名,密钥key,过期时间)
解析url:首先根据用户名从数据库中查找出密钥key和过期时间,没有则表示该请求
是伪造的或者过期的,然后验证签名,验证过期时间,都验证通过,就可以修改密码,
密码修改完以后,删除数据库中的记录。
还需要加一个定时任务,删除数据库中当前时间大于过期时间的记录。
这样就应该没啥问题拉,欢迎大家拍砖.
分享到:
相关推荐
"Java邮箱找回密码"功能是一种常见的用户身份验证机制,它允许用户通过已注册的电子邮件地址重置丢失或忘记的密码。下面将详细介绍如何使用Java来实现这个功能,以及相关的知识点。 首先,我们需要一个用户模型...
在"PHP+Ajax邮箱找回密码"项目中,PHP主要负责处理用户的请求,验证邮箱地址,发送验证邮件,以及处理用户提交的新密码信息。这包括检查邮箱是否存在于数据库中,生成并存储随机的验证码,通过SMTP协议发送带有...
在Spring MVC框架中实现邮件找回密码功能是一项常见的需求,它为用户提供了一种安全的方式来恢复丢失的账户访问。在这个过程中,用户通常需要通过已验证的电子邮件地址来接收包含特殊URL的邮件,点击该URL后,他们...
在网络安全领域,用户账户的安全性至关重要,而"邮件找回密码+无刷新验证码"是一种常见的增强安全性的技术手段。本文将详细解析这两个概念及其在实际应用中的工作原理。 首先,我们来了解一下邮件找回密码机制。当...
在IT领域,尤其是Web开发中,"PHP+Ajax邮箱找回密码"是一个常见的功能,用于帮助用户在忘记密码时通过电子邮件重置其账户的安全设置。这个功能涉及到前后端交互、用户验证以及邮件服务等多个方面,下面将详细介绍这...
在Java编程领域,邮箱找回密码是一个常见的功能,用于帮助用户在忘记密码时通过验证绑定的电子邮件地址来重置账户安全信息。本程序的核心是利用JavaMail API实现邮件发送功能,结合后端验证逻辑来完成这一过程。以下...
PHP+MYSQL通过邮箱找回密码开发源码
综上所述,“thinkPHP邮箱找回密码”涉及到了Web开发中的多个重要技术点,包括框架的使用、数据库操作、邮件服务、安全性、用户体验以及测试策略。理解并熟练运用这些知识点,可以构建出高效、安全的密码找回系统。
总结来说,这个SpringBoot项目实现了利用QQ邮箱发送找回密码的邮件功能。通过配置邮件服务,创建邮件服务类,结合数据库操作,可以提供安全可靠的密码找回流程。同时,`u_user.sql`和`u_login.sql`以及`findpassword...
本文主要介绍了Java实现邮件找回密码功能的详细实现过程,该功能主要用于用户忘记密码后通过邮箱找回密码。下面将详细介绍该功能的实现步骤和关键技术点。 需求分析 在当前的系统中,用户注册时都会强制输入邮箱,...
JSP 用户忘记密码通过邮件找回密码 JSP 用户忘记密码通过邮件找回密码
Ecmall是一款开源的电子商务系统,它提供了多种用户登录和找回密码的方式,其中包括通过注册邮箱来重置密码。针对"Ecmall_邮箱找回密码问题",我们来深入探讨一下可能遇到的问题及解决方案。 首先,Ecmall的邮箱...
简单的实现发送邮件找回密码,运用thinkphp框架,很适合新手的操作模仿
在网站设计中,邮箱找回密码是...总的来说,"网站常用邮箱找回密码流程"是一个综合性的系统工程,涵盖前端交互、后端处理、数据库操作、网络通信等多个层面,对于开发者来说,理解和实现这一功能需要扎实的多方面技能。
总结起来,"Java通过邮箱找回密码和注册"涉及到的关键技术包括使用JavaMail发送和接收电子邮件,以及密码重置和电子邮件验证流程的设计。理解并掌握这些知识对于任何需要处理用户账户的Java开发者来说都至关重要。...
public function send_email($judge_code,$user_email,$username){ import("@.ORG.My.base_mail");... $Subject='[111]找回您的帐户密码'; //发送邮件 $mail->SendMail($user_email,$message,$Subject); }
"Java实现通过绑定邮箱找回密码功能" 本文主要介绍了Java实现通过绑定邮箱找回密码功能的知识点,以下是相关的知识点摘要: 1. 验证用户名是否存在:在找回密码功能中,首先需要验证用户名是否存在,这可以通过...
E-mail邮箱密码找回工具 通过邮件客户端找回邮箱密码 你是否遇到了这样的麻烦,你长期使用foxmail,outlook等邮件客户端收发邮件,直到有天你需要到网站上去登录自己的邮箱,可是时间长了,邮箱密码却忘记了.如何找回邮箱...
标签"JSP邮箱找回密码代码"暗示我们将讨论使用Java Server Pages (JSP) 技术实现的找回密码功能。JSP是一种服务器端脚本语言,常用于构建动态Web应用程序。在找回密码的场景中,JSP可以处理用户请求,验证信息,发送...