手机验证码使用后还要保存在数据库吗

白衣莹墨
  • 74

请教一下后端大哥们一个问题, 在一个短信验证码登录功能中, 用户点击获取验证码后, 生成一条记录保存下来验证码与之相关信息, 那么用户下次获取验证码, 是否还是要插入一条记录呢, 还是在现有的记录用新的验证码覆盖旧的

我的看法是, 验证码是一次性的, 使用后就不再使用了, 如果一直插记录会导致表越来越大, 存在查找性能变差的情况(找到该记录, 判断是否过期之类的操作)

我的担心是否多余, 最佳实践是怎么样的呢?求赐教!

回复
阅读 1.9k
4 个回答
✓ 已被采纳

验证码一般通过缓存服务中如redis来实现即可,对其设置过期时间,这样就不用担心表数据量越来越大的问题

  1. 当用户点击获取验证码时,先从redis中获取该用户对应的验证码
  2. 如果获取到,说明验证码还未过期,提示用户请勿频繁点击获取
  3. 如果获取不到,则将用户id与新生成的验证码放到redis中,并设置过期时间

放redis,可以設置緩存超時時間,一般驗證碼短信上的多少分鐘内有效,一般就是redis緩存保存多久的時長

看贵司的业务需求。
验证码的实效性验证,你可以考虑读缓存。
但是你也要插入日志表留底。比如请求验证码接口响应时间,短信到达率,发送成功率。将来可能涉及到审计,统计。不然你自己都不知道发了多少。

验证码在服务端一般的方式都是放在redis中的,主要的作用是辅助验证的,目前大部分的供应商都支持配置限制同一手机号获取验证码的次数。验证码一般是供应商提供,仅辅助校验,不具唯一性,数据价值不高,没必要持久化。如果需要监控验证码的命中概率之类的,计数器即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏