邮箱找回密码
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和过期时间,没有则表示该请求
是伪造的或者过期的,然后验证签名,验证过期时间,都验证通过,就可以修改密码,
密码修改完以后,删除数据库中的记录。
还需要加一个定时任务,删除数据库中当前时间大于过期时间的记录。
分享到:
相关推荐
系统的功能涵盖用户注册、登录、密码找回、发布与回复帖子、收藏、消息通知、模拟支付以及个人信息管理等多个方面。 1.1 项目背景 随着社会经济的发展,人们的生活水平不断提高,养宠物成为了一种流行趋势,宠物...
忘记密码的用户可通过注册时使用的邮箱找回。 3.2 个人信息查看模块 登录后,用户可以查看和管理个人信息,包括浏览历史、收藏、下载记录和个人资料。 3.3 生活模块 提供涵盖日常生活、工作、娱乐、社交等多个方面...
登录功能需支持多种方式,如用户名/密码、邮箱验证、第三方账号登录(如微信、QQ等),并提供忘记密码的找回机制。 5.3 其他功能实现 除了上述功能外,还包括用户权限管理、图书分类与筛选、搜索算法优化、实时更新...
登录模块则支持记住密码、找回密码等功能,方便用户使用。 3.2 查询模块 查询模块允许用户通过关键词、分类、价格区间等条件进行商品搜索,同时提供排序和筛选功能,以提高查找效率。 3.3 购物管理模块 用户可将...
1. 用户注册与登录:原型文档包含了用户注册和登录的界面设计,可能包含手机号验证、邮箱验证等多种方式,以及密码找回、第三方账号登录等功能。 2. 首页展示:首页通常会展示热门话题、推荐内容、社区公告等,以...
登录系统需具备记住密码、找回密码等功能。 3.2.2 帖子管理:用户可以发布包含文字、图片甚至视频的帖子,帖子分类清晰,便于查找。同时,帖子支持排序、筛选、推荐等功能。 3.2.3 互动交流:用户可以对帖子进行...
1. **用户模块**:用户注册、登录、密码找回等基础功能。Django内置了User模型,但可以通过扩展自定义用户模型,增加如邮箱验证、积分系统等特色功能。 2. **商品展示**:管理员可以发布手办商品,包含商品图片、...