`

邮箱找回密码【思路收藏】

    博客分类:
  • java
 
阅读更多

邮箱找回密码

http://www.iteye.com/topic/634992

 

最近要开发个功能邮箱找回密码的功能。

大致思路就是发送邮件→连接邮件里的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和过期时间,没有则表示该请求

是伪造的或者过期的,然后验证签名,验证过期时间,都验证通过,就可以修改密码,

密码修改完以后,删除数据库中的记录。

还需要加一个定时任务,删除数据库中当前时间大于过期时间的记录。

分享到:
评论

相关推荐

    毕业论文jsp2150宠物交易系统ssh.doc

    系统的功能涵盖用户注册、登录、密码找回、发布与回复帖子、收藏、消息通知、模拟支付以及个人信息管理等多个方面。 1.1 项目背景 随着社会经济的发展,人们的生活水平不断提高,养宠物成为了一种流行趋势,宠物...

    (完整word版)基于地理位置的社交旅游APP软件设计说明书.doc

    忘记密码的用户可通过注册时使用的邮箱找回。 3.2 个人信息查看模块 登录后,用户可以查看和管理个人信息,包括浏览历史、收藏、下载记录和个人资料。 3.3 生活模块 提供涵盖日常生活、工作、娱乐、社交等多个方面...

    泡泡图书吧网站设计与实现-计算机技术毕业设计论文.pdf

    登录功能需支持多种方式,如用户名/密码、邮箱验证、第三方账号登录(如微信、QQ等),并提供忘记密码的找回机制。 5.3 其他功能实现 除了上述功能外,还包括用户权限管理、图书分类与筛选、搜索算法优化、实时更新...

    网上超市系统设计说明说

    登录模块则支持记住密码、找回密码等功能,方便用户使用。 3.2 查询模块 查询模块允许用户通过关键词、分类、价格区间等条件进行商品搜索,同时提供排序和筛选功能,以提高查找效率。 3.3 购物管理模块 用户可将...

    某app完整原型文档

    1. 用户注册与登录:原型文档包含了用户注册和登录的界面设计,可能包含手机号验证、邮箱验证等多种方式,以及密码找回、第三方账号登录等功能。 2. 首页展示:首页通常会展示热门话题、推荐内容、社区公告等,以...

    (修改)基于javaee的鱼友交流论坛的设计与实现12.23.docx

    登录系统需具备记住密码、找回密码等功能。 3.2.2 帖子管理:用户可以发布包含文字、图片甚至视频的帖子,帖子分类清晰,便于查找。同时,帖子支持排序、筛选、推荐等功能。 3.2.3 互动交流:用户可以对帖子进行...

    Python基于Django的手办交易系统源码.zip

    1. **用户模块**:用户注册、登录、密码找回等基础功能。Django内置了User模型,但可以通过扩展自定义用户模型,增加如邮箱验证、积分系统等特色功能。 2. **商品展示**:管理员可以发布手办商品,包含商品图片、...

Global site tag (gtag.js) - Google Analytics