014_Java 手机注册等验证码在服务端的存放位置

1. 当业务量不大时,且时间小于session存活时间时,使用session来进行存储

  • session存活时间 : 在tomcat中默认为30分钟,可以根据需要进行修改

2. 当业务量达到一定程度后,不建议使用session,效率会降低,建议使用redis等缓存技术来存储

  • redis存储时,手机号作为key,验证码和超时时间作为值.前台设置60秒按钮才能重新点击
  • 登录后台接收到前台的手机号时,从redis中get验证码,如果为空,给出提示重新获取
  • 如果不为空,判断前台传递来的验证码与redis中的是否一致
  • 之后做出登录逻辑
  • 使用完的验证码要删除掉,避免重复使用
  • 如果第一个用户没收到,60秒后重新发送验证时,更新redis中的验证码

  备注 :

  1. 可以用手机号码做key,设置过期时间,发短信前先get一下,n秒内能get到值就不允许重复发送 ?

如果这样写,但纯存一个key值肯定后者要覆盖前者,你可以用随机生成的验证码加上token或者id存入redis,但是这样还会有个问题,一旦并发量大,那么redis也是很难去找,浪费效率,所以在生产的时候,你可以加冒号,在redis中自动生成指定的文件夹

  2. java 将验证码存放在session是否安全,会不会被截取?

  JSP和servlet都运行在服务端,是不用担心被熊孩子截取的

  3.手机验证码计费问题?

  这是另外一个问题,且待下回详解......

3. 不建议使用关系型数据库,毕竟从硬盘读写数据速度要远低于内存的读写速度.

相关推荐