redis模拟验证码发送

要求:1.输入手机号,点击发送后随即生成6位数字码,2分钟有效

​ 2.输入验证码,点击验证,返回成功或者失败

​ 3.每个手机号每天只能输入3次

分析:

​ 验证码2分钟内有效,将验证码存放在redis里面,设置过期时间为120秒

​ 判断验证码是否一致,从redis里面获取验证和输入的验证码进比较

​ incr 每次发送之后加1 大于2的时候,提示不能发送验证码

package com.atguigu.jedis.duanxin;

import redis.clients.jedis.Jedis;

import java.util.Random;

/**
 * @PROJECT_NAME: Jredis_redisdemo
 * @DESCRIPTION:
 * @USER: 28416
 * @DATE: 2022/11/19 16:43
 */
public class PhoneCode {
    public static void main(String[] args) {
        //模拟验证发送
        verifyCode("1663899xxxx");
        //校验
       //getRedisCode("1663899xxxx","935668");
    }
    //验证码的校验功能
    public static  void getRedisCode(String phone,String code){
        Jedis jedis = new Jedis("host",6380);
        //设置密码了 需要加上这个进行认证
        jedis.auth("密码");
        String codeKey = "VerifyCode"+phone +":code";
        System.out.println(codeKey);
        String s = jedis.get(codeKey);
        System.out.println(s);
        if (code.equals(s)){
            System.out.println("验证成功");
        }else {
            System.out.println("失败");
        }
    }
    public static String getCode(){
        Random random = new Random();
        String code = "";
        for (int i = 0; i < 6; i++) {
          int rand =   random.nextInt(10);
          code += rand;
        }
        return  code;
    }

    //每个手机每天只能发送三次,验证码放到redis中,设置过期时间
    public static void  verifyCode(String phone){
        Jedis jedis = new Jedis("host",6380);
        //设置密码了 需要加上这个进行认证
        jedis.auth("密码");
        //拼接key
        String countKey = "VerifyCode" +phone +":count";
        String codeKey = "VerifyCode"+phone +":code";

        String s = jedis.get(countKey);
        if (s == null) {
            //没有发送次数  证明第一次发送
            jedis.setex(countKey,24*60*60,"1");
        }else if (Integer.parseInt(s) <= 2){
            jedis.incr(countKey);
        }else if (Integer.parseInt(s) >2){
            System.out.println("手机号获取验证码的次数达到了上限");
            jedis.close();
        }

        //发送的验证码要存放在redis里面
        String code1 = getCode();
        jedis.setex(codeKey,1200,code1);
        jedis.close();
    }
}

验证流程正确

超过三次

原文地址:http://www.cnblogs.com/wiseleer/p/16906588.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性