功能设计讨论 邮箱 短信 验证的时效性和一次性的实现

最近一直有一个想法就是把自己设计功能的思路分享给大家,希望通过讨论一个功能的实现并从讨论中学到更加好的方法和技巧
因为本人还在上学,没见过大场面 所以斗胆就先拿这一个小例子抛砖引玉
  • 在开发中我们在登录注册或者其他的应用中,我们经常会使用到邮箱和短信登录
  • 在设计邮箱和短信登录的时候,我们常常需要考虑到邮箱和短信时效和一次性的问题
  • 场景一 需要实现邮箱改密功能,将修改密码的 url 发送给指定邮箱,url 点击一次后即失效

    • 我的做法是生成一个 url 里面附带有用户的id和随机成的key
    http://localhost/user/verifymail/id/{$id}/key/{$key}
    • 发送时把key存入redis,mysql或者session
    • 当用户点击后,先从url中取到key
    • 比较 url 得到的 key与 redis,mysql或者session 中是否相同
    • 如果相同就修改密码
    • 在随机生成一个与之前不一样的key在存入redis,myqsl或者session中
    • 如果不同返回链接失效
  • 场景二 发送短信验证码,实现短信有效期3分钟
    • 将短信生成的验证码使用字符串类型存入redis 并设置该字符串失效时间为3分钟
    • 当用户接受短信后,从 redis 中取验证码,如果验证码存在则登录成功,否则超时

最后 想看看大家有什么更加好的设计方案吗,如果有希望可以指教一下

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

中规中矩的规则,没什么大问题

在安全、 key/ 验证码、重复请求处理上优化一下

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!