Skip to content

Latest commit

 

History

History
30 lines (21 loc) · 1.24 KB

File metadata and controls

30 lines (21 loc) · 1.24 KB

01 手机验证码功能

需求

  1. 输入手机号, 点击发送后, 随机生成 6 位数的验证码。 2分钟有效。
  2. 输入验证码, 点击验证, 返回成功或失败
  3. 每个手机号每天只能输入3次。

需求拆解

生成验证码

3.1. 从 redis 中获取验证码 userSmsCodeTimes:13912341234 发送次数 3.2. 判断验证码发送次数是超过 3次, 超过则退出。 1.1. 生成六位数验证码 1.2. 验证码保存到 redis 中,userSmsCodeValue:13912341234 , 过期时间 2 分钟。 3.3. 判断是否存在验证码发送计数 key (userSmsCodeTimes:13912341234) , 如果不存在, 则创建并设置过期时间。 3.4. 在 redis 中验证码发送计数 累加 1。

校验验证码

2.1. 从 redis 中获取验证码。 2.2. 判断验证码于输入验证码是否相同。 2.3. 成功返回 200, 并删除 redis 中的验证码; 错误返回 403 4.1. 清理 userSmsCodeTimes:*

  • 方法1: 协程 cronjob 定时 userSmsCodeTimes:*
  • 方法2: 计算 24 点剩余秒数, 使用 ttl 设置过期。 (选择这种,单纯为了练习写代码)
  • 方法3: key 设置为 userSmsCodeTimes:<date>:<phone>, 并设置 8万秒过期。缺点是浪费内存空间。