首页 > 其他分享 >Jedis——手机验证码操作

Jedis——手机验证码操作

时间:2023-06-02 19:11:06浏览次数:32  
标签:String Random Redis 验证码 Jedis 手机 输入

要求

1、输入手机号,点击发送后随机生成6为数字码,2分钟有效

Random、验证码存进Redis并设置过期时间120秒

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

从Redis中获取验证码比对输入验证码

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

incr每次发送加1,大于2之后,提醒不能发送

package com.atguigu.jedis;

import redis.clients.jedis.Jedis;

import java.util.Random;

public class PhoneCode {

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

    //2、每个手机每天只能发送三次,验证码放到Redis中,设置过期时间
    public static void verifyCode(String phone){
        //连接redis
        Jedis jedis = new Jedis("192.168.189.128", 6379);
        //手机发送次数key
        String countKey = "Verifycode" + phone + "count";
        //验证码key
        String codeKey = "Verifycode" + phone + "code";

        String count = jedis.get(countKey);
        if(count == null){
            //第一次发送
            jedis.setex(countKey, 24*60*60, "1");
        }else if(Integer.parseInt(count)<=2){
            //发送次数加1
            jedis.incr(countKey);
        }else{
            //发送三次,不能发送
            System.out.println("今天发送次数已经超过三次");
            jedis.close();
            return;
        }

        //发送验证码放到redis
        String code = getCode();
        jedis.setex(codeKey, 120, code);
        jedis.close();

    }

    public static void getRedisCode(String phone, String code){
        Jedis jedis = new Jedis("192.168.189.128", 6379);
        //验证码key
        String codeKey = "Verifycode" + phone + "code";
        //从jedis获取验证码
        String redisCode = jedis.get(codeKey);
        if(redisCode.equals(code)){
            System.out.println("success");
        }else{
            System.out.println("fail");
        }
        jedis.close();
    }

    public static void main(String[] args) {
        //模拟验证码发送
        verifyCode("134567");

        getRedisCode("134567", "658404");

    }
}

 

标签:String,Random,Redis,验证码,Jedis,手机,输入
From: https://www.cnblogs.com/fxzm/p/17452737.html

相关文章

  • Jedis
    一、新建Maven项目二、导入Jedis依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.2.0</version></dependency>三、获取连接-创建Jedis对象四、测......
  • ​​拍照替换 IOS手机端安装使用教程​
    拍照替换IOS手机端安装使用教程拍照插件是一款自动替换拍照数据的插件,支持单张多张照片选择替换,作用于系统全局,所有调用拍照的APP均有效。功能使用简单,单张,多张图片选择,按音量键切换照片。一、适用机型及系统1、机型:除SE和XR之外单所有iphone机型,可越狱即可2、系统:支持12系统及以......
  • 使用vue的简单的纯前端JS验证码实现
    使用vue的简单的纯前端JS验证码实现感觉人不能在SQL里面淹死,得看看别的东西了因为是上班摸鱼偷摸搞的,所以人比较懒,很多东西也懒得修修改改,直接放在一个html文件下了页面如下js的生成图形逻辑是21年毕业的时候百度CV的,出处是找不到了<!DOCTYPEhtml><htmllang="en"><head......
  • 手机端sso无法正常跳转
    Vue3前端.NET后端开发问题记录:1.钉钉sso,PC端跳转不受影响,但是手机端无法加载sso。发现是钉钉api版本落后导致,不更新版本的情况下需要在index.html文件中<head>中添加  <script>   this.globalThis||(this.globalThis=this);  </script>......
  • 如何通过手机远程监控PLC并接收故障报警信息
    PLC在自动化生产制造中应用越来越广泛,对其进行监控和管理的需求也越来越高。以前,我们想要看到现场设备的实时数据,必须在控制室内通过工控机、电脑、触摸屏等这些上位机设备才能看到,同理PLC维护也需要工程师在现场进行编程调试工作,非常不方便。 在工业物联网技术的支持下,我们可以随......
  • 手机直播源码,android 轮播图(自定义组合控件)
    手机直播源码,android轮播图(自定义组合控件)1.项目gradle添加一下配置:  allprojects{ repositories{ ... maven{url'https://jitpack.io'} } } ​2.module中的gradle添加依赖:  dependencies{   implementation'com.github.truemi:SlideS......
  • 正则灵异事件?校验结果跟预期不一致,标准手机号校验不通过!
    今天一位同事跟我说遇到个奇怪的问题。自己写了个简单的手机号校验正则表达式,然后明明输入的标准手机号却一直走的校验不通过分支。我同事已经开始怀疑自己的手机号是假的了......
  • 阿里云验证码短信功能---SpringBoot项目
    阿里云官网:https://www.aliyun.com/activity/2023caigouji/shangyuncaigouji?utm_content=se_1013408957准备工作注册阿里云账号申请AccessKeyID和AccessKeySecret搜索“短信服务SMS”,选择“免费开通”即可选择国内消息,申请签名管理和模板管理准备完成后我们可以获取Access......
  • 验证码识别
    验证码识别是基于线上的打码平台识别验证码-打码平台:1.超级鹰(http://www.chaojiying.com/)-注册(用户中心身份)-登录(用户中心身份)-1.查询余额,请充值-2.创建一个软件ID(899370)-3.下载示例代码2.云打码3.打......
  • 手机QQ的不足
    手机QQ凭借早期简洁的界面、方便快捷、易上手的特点迅速霸占了国内社交软件的市场,成为巨头软件。qq的野心逐渐膨胀,不断更新了qq的体量,企图把qq做成全能的软件。于是”全能“的qq引入了大量的页面广告和推送开始盈利,这给用户带了不好的体验;qq塞入了大量的附加组件,且无法进行移除,属......