zoukankan      html  css  js  c++  java
  • 项目实践总结 存储短信验证码

      存储短信验证码有如下几种方式:

      1 Cookie

      Cookie存在客户端即浏览器,可以被修改。因此,即使加密了,也不可靠。

      2 Session

      Session存在服务端即服务器,虽然安全并且可以设置失效时间,但是Session会受到客户端即浏览器的影响,因为关闭浏览器后Cookie不可用会使得Session不可用,即使Session未超时。另外,Session一般只存储用户id。

      3 数据库

      验证码存在数据库后每次访问数据库都会消耗很多资源。作为临时数据,验证码不需要持久化,没有必要存入数据库。

      注:正常状态指手机号已注册且没有被封号,条件语句中的手机号有时指手机号对应的用户,验证信息指验证码和有效期,下同。

      获取验证码的流程图如下:

      

      注册的流程图如下:

      

      重置密码的流程图如下:

      

      4 内存

      在内存中通过HashMap来存储key手机号和value验证信息(包括验证码和有效期)的键值对。ConcurrentHashMap不允许key或value为空。

      获取验证码的流程图如下:

      

      注册的流程图如下:

      

      重置密码的流程图如下:

      

      5 Redis缓存

      采用高可用集群的配置方式来实现Redis缓存,高效率且低消耗,有利于实现高并发。

      参考资料

      短信验证码存储问题!

  • 相关阅读:
    [leetcode]Palindrome Partitioning II
    [wikioi]传纸条
    [leetcode]Palindrome Partitioning
    [leetcode]Convert Sorted List to Binary Search Tree
    [topcoder]ActivateGame
    [topcoder]NinePuzzle
    [topcoder]BestRoads
    [topcoder]IncreasingSubsequences
    [leetcode]Surrounded Regions
    CF 432B :Football Kit
  • 原文地址:https://www.cnblogs.com/WJQ2017/p/8366426.html
Copyright © 2011-2022 走看看