IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    邮件密码找回功能实现

    Timmy (zhu327@qq.com)发表于 2015-06-04 15:15:52
    love 0

    思路

    公司做项目,有用到注册,登录,密码找回等功能,以前自己写的论坛也实现了邮件密码找回,不过比较简单,直接生成随机密码,把新密码发送到用户邮箱.比较不安全,要实现一般网站的用链接找回的功能.

    对链接的要求有如下:

    1. 每次生成的链接都必须不一样;
    2. 链接要有过期时间,过期以后无效;
    3. 后台在链接被请求时,必须验证链接是否有效.

    针对这3方面的要求,设计url格式,/resetpassword/?sid=md5加密后的字符串&user;=用户名&expires;=过期时间时间戳.在user表上增加字段secret_key用于保存加密的密钥.

    加密过程,生成sid:

    1. 用户在请求/forgot/表单输入邮件地址,时后台校验用户是否存在,如果存在则,通过uuid生成随机字符串secret_key更新用户信息;
    2. 获取当前时间戳+过期时间,生成过期的时间戳;
    3. md5加密username-expires-secret_key生成sid.

    解密验证:

    1. 后台获取到/resetpassword/的GET请求后,先验证参数是否正确;
    2. 通过username获取用户信息;
    3. 判断过期时间是否过期;
    4. md5加密username-expires-secret_key与sid对比是否一致,如一致才会返回重置密码表单;
    5. 重置密码表单提交时POST请求提交地址与GET请求一致,必须再次验证sid.


沪ICP备19023445号-2号
友情链接