- 输入手机号, 点击发送后, 随机生成 6 位数的验证码。 2分钟有效。
- 输入验证码, 点击验证, 返回成功或失败
- 每个手机号每天只能输入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万秒过期。缺点是浪费内存空间。