请教一下后端大哥们一个问题, 在一个短信验证码登录功能中, 用户点击获取验证码后, 生成一条记录保存下来验证码与之相关信息, 那么用户下次获取验证码, 是否还是要插入一条记录呢, 还是在现有的记录用新的验证码覆盖旧的
我的看法是, 验证码是一次性的, 使用后就不再使用了, 如果一直插记录会导致表越来越大, 存在查找性能变差的情况(找到该记录, 判断是否过期之类的操作)
我的担心是否多余, 最佳实践是怎么样的呢?求赐教!
请教一下后端大哥们一个问题, 在一个短信验证码登录功能中, 用户点击获取验证码后, 生成一条记录保存下来验证码与之相关信息, 那么用户下次获取验证码, 是否还是要插入一条记录呢, 还是在现有的记录用新的验证码覆盖旧的
我的看法是, 验证码是一次性的, 使用后就不再使用了, 如果一直插记录会导致表越来越大, 存在查找性能变差的情况(找到该记录, 判断是否过期之类的操作)
我的担心是否多余, 最佳实践是怎么样的呢?求赐教!
看贵司的业务需求。
验证码的实效性验证,你可以考虑读缓存。
但是你也要插入日志表留底。比如请求验证码接口响应时间,短信到达率,发送成功率。将来可能涉及到审计,统计。不然你自己都不知道发了多少。
验证码在服务端一般的方式都是放在redis中的,主要的作用是辅助验证的,目前大部分的供应商都支持配置限制同一手机号获取验证码的次数。验证码一般是供应商提供,仅辅助校验,不具唯一性,数据价值不高,没必要持久化。如果需要监控验证码的命中概率之类的,计数器即可。
15 回答8.4k 阅读
7 回答5.3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
5 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
4 回答4k 阅读
验证码一般通过
缓存服务中如redis
来实现即可,对其设置过期时间
,这样就不用担心表数据量越来越大的问题先从redis中获取该用户对应的验证码
验证码还未过期
,提示用户请勿频繁点击获取
用户id与新生成的验证码
放到redis中,并设置过期时间