一、发送验证码

二、验证码校验


验证码使用过后,立即删除。

三、案例源码


import redis.clients.jedis.Jedis;import java.util.Random;/*** @ClassName PhoneVerifyCode* @Author Lucky-Six* @Date 2022/10/24 16:22* @Version 1.0.0*/
public class PhoneVerifyCode {private static Jedis jedis = new Jedis("hadoop-master", 6379);// 工作流程:前端点击发送验证码,//         后端处理请求、生成随机验证码,调用第三方api给对应手机号发送验证码。并将code写入redis//         当用户输入验证码、点击登录,取出redis缓存的验证码做对比、验证过后,即刻删除。public static void main(String[] args) {// 发送验证码-sendVerifyCode("15078963214");// 验证码校验-   手机号、redis中的验证码
//        verificationCode("15078963214", "136896");}/*** @description: 发送手机验证码* @author: Lucky-Six* @date: 2022/10/24 16:52* @param: [phone]* @return: void**/private static void sendVerifyCode(String phone) {//发送验证码之前,先校验。每天只能发送3次boolean b = verifySendCodeCount(phone + "_sendCount");if (b) {System.out.println("今天已发送三次验证码,请改天再来哦。");return;}//  6位验证码String verifyCode = generationVerifyCode();// 记录本次发送验证码jedis.incr(phone + "_sendCount");// 验证码,3分钟内有效jedis.setex(phone, 60 * 3, verifyCode);System.out.println("==验证码发送成功,请注意查收==");}/*** @description: 校验当天发送验证码次数* @author: Lucky-Six* @date: 2022/10/24 16:51* @param: [phone]* @return: boolean**/private static boolean verifySendCodeCount(String phone) {//  15078963214_sendCountString sendCount = jedis.get(phone);//  如果取不到,说明今天还未发送if (sendCount == null) {// 并设置改手机号发送次数,有效期1天jedis.setex(phone, 60 * 60 * 24, String.valueOf(0));return false;}return Integer.parseInt(sendCount) > 2;}/*** @description: 模拟验证码校验过程* @author: Lucky-Six* @date: 2022/10/24 16:51* @param: [phone, code]* @return: void**/private static void verificationCode(String phone, String code) {// 对比redis缓存中的验证码String verifyCode = jedis.get(phone);if (verifyCode.equals(code)) {System.out.println("验证码正确");// 验证码使用过后,马上删除。jedis.del(phone);return;}System.out.println("验证码错误");}/*** @description: 生成6位验证码* @author: Lucky-Six* @date: 2022/10/24 16:51* @param: []* @return: java.lang.String**/private static String generationVerifyCode() {Random random = new Random();int verifyCode = 99999 + random.nextInt(100000);return String.valueOf(verifyCode);}}

Maven坐标:

 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.2.0</version>
</dependency>

redis缓存手机验证码案例相关推荐

  1. Redis——模拟手机验证码发送

    使用redis模拟手机验证码发送,规定一个手机号一天只能请求三次验证码,且每次请求的验证码只有两分钟就会过期 1.首先写一个函数随机产生六位验证码,使用random函数 //随机生成六位验证码publ ...

  2. Redis实现手机验证码功能

    完成一个手机验证码功能 要求: 1.输入手机号,点击发送后随机生成6位数字码,2分钟有效 2.输入验证码,点击验证,返回成功或失败 3.每个手机号每天只能输入3次 流程分析 代码实现 public c ...

  3. 前端——获取手机验证码案例

    效果 实现间隔规定秒数允许获取短信(如每隔60s可以点击一次获取验证码按钮) 代码 <!DOCTYPE html> <html lang="en">< ...

  4. 【SpringBoot整合缓存】-----Redis缓存篇

    本专栏将从基础开始,循序渐进,以实战为线索,逐步深入SpringBoot相关知识相关知识,打造完整的SpringBoot学习步骤,提升工程化编码能力和思维能力,写出高质量代码.希望大家都能够从中有所收 ...

  5. SpringSecurity OAuth2实现单点登录,微信扫码登录,Redis缓存验证码---入门到实战

    1. 认证授权 1.1 什么是认证授权 ​ 例如课程发布后用户通过在线学习页面点播视频进行学习.如何去记录学生的学习过程呢?要想掌握学生的学习情况就需要知道用户的身份信息,记录哪个用户在什么时间学习什 ...

  6. springboot整合redis之用户手机验证码注册登录

    目录 1搭建项目开发环境 1.1安装redis 1.1.1下载redis 1.1.2安装redis 1.1.3设置redis为windows服务 安装为windows服务 1.2启动idea 1.3增 ...

  7. java手机短信验证,并存入redis中,验证码时效5分钟

    目录 1.注册发送短信账号一个账号 2.打开虚拟机,将redis服务端打开 3.创建springboot工程,导入相关依赖 4.写yml配置 5.创建controller层,并创建controller ...

  8. SpringBoot+Vue实现请求后台获取Base64编码的图片验证码并使用Redis缓存实现2分钟内有效

    场景 前端Vue的登录页面,验证码请求后台,后台生成验证码照片后使用Base64编码后, 返回给前端,前端进行显示. 注: 博客: https://blog.csdn.net/badao_liuman ...

  9. java redis缓存理解_Java项目中使用Redis缓存案例

    缓存的目的是为了提高系统的性能,缓存中的数据主要有两种: 1.热点数据.我们将经常访问到的数据放在缓存中,降低数据库I/O,同时因为缓存的数据的高速查询,加快整个系统的响应速度,也在一定程度上提高并发 ...

最新文章

  1. python list越界原因(list assignment index out of range)
  2. 重磅丨We Are SocialHootsuite:2018全球数字报告
  3. 关于Kotlin语法的异议
  4. python经典100例答案pdf-Python 入门 100 案例,PDF免费下载
  5. 数列分块入门 (1 ~ 7)
  6. C#控件跨线程内容更新
  7. 研究机构:苹果M1芯片代工订单占台积电5nm工艺25%产能
  8. 项目管理-让什么人做什么事
  9. 代码英雄之数据爆炸:身陷数据洪流,企业应如何赋能而生
  10. Java set的区别_Java Set集合详解及Set与List的区别
  11. keras cnn注意力机制_2019 SSA-CNN(自注意力机制)目标检测算法论文阅读笔记
  12. 计算机无法连接富士网络打印机,富士施乐打印机无法识别USB端口的解决方案
  13. matlab计算方差和平均值,matlab求平均值和方差
  14. 二项分布的期望方差证明_二项分布的期望和方差
  15. Spring获取外网IP
  16. Facebook十大失误回顾
  17. Twitterrific for Mac(Twitter客户端)
  18. 时区 夏令时造成的问题
  19. 2. 将文件中每一行字符反序
  20. 机械臂避障与轨迹规划仿真

热门文章

  1. JDK8新特性之Lambda表达式、函数式接口
  2. 一生之中最值得看的书
  3. python print()方法基本用法,print()格式化输出
  4. 拒绝“套话”,Android中基本概念的通俗解释
  5. 通过ROS控制真实机械臂(7)---三次样条插补
  6. docker瘦身技巧
  7. PowerPmac上位机开发C#(二)_启动与关闭界面设计
  8. 新年寄望:从小做起,活在当下
  9. 八款网络电视软件横评
  10. Java中文乱码——7、Tigo文件下载乱码