java - 短信验证清理验证码

查看:561
本文介绍了java - 短信验证清理验证码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

java后台
关于短信验证码的问题本想把验证码放到session中,一提出就被否决了。说不好管理。因为时效只有两分钟。
现在方案是这样的 两个map 以输入文本框的手机号码为key 值。 分别放入 截至时间 和 验证码。然后通过第三短信平台发送的验证码和现在对比做逻辑。 问题是。假日2分钟后没人输入验证码。重新发送的验证码要失效才行。我本想写个定时器的 但是2分钟内它一直开着。如果同一时间。其他人就没法操作了 。希望给位指导下 别说redis。不会它。或者大家给个解决方案吧 什么时候清除合适

解决方案

  1. 设置一个有效期长量,如 120 秒

  2. 用户申请短信验证码

  3. 服务端根据用户的手机号创建记录:创建时间、手机号、验证码、激活状态(默认为否)

  4. 提交第 3 方短信平台(如果有必要等结果再对条目的状态做标记,那就另说)

  5. 用户提交验证,服务端读取『手机号+验证码』及创建时间倒序的第 1 条,,

    1. 如不存在,直接驳回(可能被删了,也可能是手机号码、验证码之一不正确)

    2. 如已存在,检查过期时间(用户提交时间-条目创建时间是否小于等于 120 秒)

      1. 过期,直接驳回

      2. 没过期,继续下面的业务,将数据库里条目状态标记为已激活

与此同时,跑一个定时脚本,每隔 10 分钟啊 20 分钟去删数据:

  1. 已验证的。

  2. 距离脚本操作时间大于 120 秒或更长时间的;

希望有用。

这篇关于java - 短信验证清理验证码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆