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

最近一直有一个想法就是把自己设计功能的思路分享给大家,希望通过讨论一个功能的实现并从讨论中学到更加好的方法和技巧
因为本人还在上学,没见过大场面 所以斗胆就先拿这一个小例子抛砖引玉
  • 在开发中我们在登录注册或者其他的应用中,我们经常会使用到邮箱和短信登录
  • 在设计邮箱和短信登录的时候,我们常常需要考虑到邮箱和短信时效和一次性的问题
  • 场景一 需要实现邮箱改密功能,将修改密码的 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 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1

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

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

6年前 评论

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