使用redis进行手机验证码的验证、每天只能发送三次验证码 (redis安装在虚拟机linux系统中)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 该博客文章展示了如何在Linux虚拟机上使用Redis和Jedis客户端实现手机验证码的验证功能,包括验证码的生成、存储、验证以及限制每天发送次数的逻辑,并提供了测试结果截图。

文章目录

    • 1、代码
    • 2、测试结果
      • 2.1、第一次发送
      • 2.2、填写正确的验证码
      • 2.3、填写错误的验证码
      • 连续发送多次验证码

环境准备:虚拟机Linux系统,redis安装在虚拟机中。
前提条件:虚拟机开启、redis开启。需要在pom中加入jedis依赖

1、代码

package com.jedis;

import redis.clients.jedis.Jedis;

import java.util.Random;

public class JedisTestRedis {
    public static void main(String[] args) {
        //模拟发送
        verifyCode("18548375642");
//        getReidsCode("18548375642","11684");

//        System.out.println(getRandom());

    }

    //3、验证验证码
    public static void getReidsCode(String phone,String code){
        //连接redis
        Jedis jedis = new Jedis("虚拟机地址",6379);
        jedis.auth("123456");

        //验证码
        String codeKey = "verifyCode"+phone+"code";
        String redisCode = jedis.get(codeKey);

        //判断
        if(redisCode.equals(code)){
            System.out.println("成功");
        }else{
            System.out.println("失败");
        }
        jedis.close();
    }

   public static void verifyCode(String phone){
        //连接redis
       Jedis jedis = new Jedis("虚拟机地址",6379);
       jedis.auth("123456");

       //手机发送次数key
       String countKey = "verifyCode"+phone+"count";

       //验证码
       String codeKey = "verifyCode"+phone+"code";

       //每个手机每天发送三次
       String count = jedis.get(countKey);
       if(count == null){
           //第一次发送、设置次数1
           jedis.setex(countKey,24*60*60,"1");
       }else if(Integer.parseInt(count)<=2){
           //发送次数加1
           jedis.incr(countKey);
       }else if(Integer.parseInt(count)>2){
           System.out.println("发送次数已经达到三次");
           jedis.close();
           return;
       }

       //发送验证码放到redis中
       String vcode = getRandom();
       System.out.println(vcode);
       jedis.setex(codeKey,120,vcode);
       jedis.close();


   }



    //六位数验证码
    public static String getRandom(){
        Random random = new Random();
        String code ="";
        for(int i=0;i<6;i++){
            int rand = random.nextInt(10);
            code+=rand;
        }
        return code;


    }


}

2、测试结果

2.1、第一次发送

在这里插入图片描述

2.2、填写正确的验证码

在这里插入图片描述

2.3、填写错误的验证码

在这里插入图片描述

连续发送多次验证码

在这里插入图片描述

相关文章
|
4天前
|
安全 Ubuntu Linux
Linux系统中的软件管理工具主
Linux系统中的软件管理工具主
23 7
|
4天前
|
监控 Unix Linux
Linux系统工具
Linux系统工具
19 6
|
3天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
2天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
2天前
|
存储 Oracle Unix
Linux 系统目录结构
Linux 系统目录结构
10 2
|
2天前
|
Linux Shell 网络安全
Linux 系统启动过程
Linux 系统启动过程
16 2
|
3天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
4月前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
3326 2
|
5月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
180 0
|
5月前
|
Web App开发 前端开发 网络安全
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
【2月更文挑战第21天】前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
92 1
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用