redis 手机验证码实现示例

本文主要介绍了redis 手机验证码实现示例,分享给大家,具体如下:

/**
 * @author gh  Email:@2495140780qq.com
 * @Description
 * @date 2021-11-10-21:12
 */
public class PhoneCode {

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

        //效验
        getRedisCode("13796734562", "740032");

    }
    //3.验证码的校验
    public static void getRedisCode(String phone,String code) {
        //从redis中获取验证码
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //验证码key
        String codeKey = "VerifyCode"+phone+":code";
        String redisCode = jedis.get(codeKey);
        //判断
        if(redisCode.equals(code)) {
            System.out.println("成功");
        }else {
            System.out.println("失败");
        }
        jedis.close();

    }

    //2.每个手机每天只能发送三次,验证码放到redis中,设置过期时间60
    public static void verifyCode(String phone) {//手机号
        //链接redis
        Jedis jedis = new Jedis("127.0.0.1",6379);

        //拼接key
        //手机发送次数
        String countKey = "VerifyCode" + phone + ":count";//规则保证唯一,规则自己订

        //验证码key
        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 = getCode();
        jedis.setex(codeKey,120,vcode);
        jedis.close();
    }

    //1.生成6位的验证码
    public static String getCode() {
        Random random = new Random();
        String code = "";

        for (int i = 0; i < 6; i++) {
            int rand = random.nextInt(10);   //10 以内的值
            code += rand;
        }
        return code;
    }
}

发送验证码

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
1) "VerifyCode13796734562:count"
2) "VerifyCode13796734562:code"
127.0.0.1:6379> get VerifyCode13796734562:count   # 第一次获取验证码
"1"
127.0.0.1:6379> get VerifyCode13796734562:code    # 获取的验证码为
"478121"
127.0.0.1:6379> get VerifyCode13796734562:count
"2"
127.0.0.1:6379> get VerifyCode13796734562:code
"250610"
校验

到此这篇关于redis 手机验证码实现示例的文章就介绍到这了,更多相关redis 手机验证码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何使用Java redis实现发送手机验证码功能

    要求: 1.输入手机号,点击发送后随机生成6位数字码,2分钟有效 2.输入验证码,点击验证,返回成功或失败 3.每个手机号每天只能输入3次 代码如下 import redis.clients.jedis.Jedis; import java.util.Random; public class ValidationTest { public static void main(String[] args) { //getValidation("15005076571"); //checkV

  • Redis模仿发送手机验证码功能

    流程图 一:添加jedis依赖包 二:测试连接Redis服务是否成功 // 创建Jedis对象用于连接Redis服务(在服务器上通过redis-server需要指定配置文件:redis-server /etc/redis.conf) Jedis jedis = new Jedis("192.168.119.128", 6379); String value = jedis.ping(); System.out.println(value); jedis.close(); 三:编写生成验

  • redis 手机验证码实现示例

    本文主要介绍了redis 手机验证码实现示例,分享给大家,具体如下: /** * @author gh Email:@2495140780qq.com * @Description * @date 2021-11-10-21:12 */ public class PhoneCode { public static void main(String[] args) { //模拟验证码发送 // verifyCode("13796734562"); //效验 getRedisCode(&q

  • django 发送手机验证码的示例代码

    一.流程分析: 1.用户在项目前端,输入手机号,然后点击[获取验证码],将手机号发到post到后台. 2.后台验证手机号是否合法,是否已被占用,如果通过验证,则生成验证码,并通过运行脚本,让短信运营商向该手机号,发送该验证码,如果没通过验证,则返回错误信息 3.用户收到短信验证码以后,再次将所有信息post到后台. 4.后台验证各个数据,通过验证则完成实名制认证,如果没通过则返回错误信息. 总结,一次实名验证,需要两次ajax+post 二.对接短信商: 1.在云片网端: 1.注册云片网 地址:

  • Redis模仿手机验证码发送的实现示例

    目录 流程图 一:添加jedis依赖包 二:测试连接Redis服务是否成功 三:编写生成验证码方法 四:编写发送验证码方法 五:编写校验验证码方法 本文主要介绍了Redis模仿手机验证码发送的实现示例,分享给大家,具体如下: 流程图 一:添加jedis依赖包 二:测试连接Redis服务是否成功 // 创建Jedis对象用于连接Redis服务(在服务器上通过redis-server需要指定配置文件:redis-server /etc/redis.conf) Jedis jedis = new Je

  • Redis实现验证码发送并限制每日发送次数的示例代码

    目录 1.功能 2.分析 3.实现 1.功能 输入手机号,点击发送后随机生成六位数字码,2分钟有效 输入验证码,点击验证,返回成功或失败 每个手机号每天只能输3次 2.分析 每个手机每天只能输3次:incr每次发送之后+1,当值为3时提示不能发送,过期时间为当天结束 随机生成6位数字验证码:RandomUtil(hutool) 验证码2分钟有效:放入redis里并设置过期时间2分钟 判断验证码是否一致:从redis里获取验证码和输入的验证码进行比对 3.实现 package cn.ken.blo

  • Spring Security OAuth 自定义授权方式实现手机验证码

    Spring Security OAuth 默认提供OAuth2.0 的四大基本授权方式(authorization_code\implicit\password\client_credential),除此之外我们也能够自定义授权方式. 先了解一下Spring Security OAuth提供的两个默认 Endpoints,一个是AuthorizationEndpoint,这个是仅用于授权码(authorization_code)和简化(implicit)模式的.另外一个是TokenEndpoi

  • Django使用celery异步发送短信验证码代码示例

    目录 celery 1.celery介绍 1.1 celery应用举例 1.2 Celery有以下优点 1.3 Celery 特性 2.工作原理 2.1 Celery 扮演生产者和消费者的角色 3.异步发短信 1.settings同级目录下创建 celery 文件 2.配置settings文件 3 配置 settings同级目录下 init 文件 4.在utils下新建一个task.py文件 5.接口中调用 6 .先启动django项目 然后另开终端 cd到项目 celery 1.celery介

  • SpringBoot集成Redis实现验证码的简单案例

    目录 一.下载安装Redis 二.代码部分 总结 前言 一次学习过程中简单的记录 一.下载安装Redis 这里就不多说了,下载安装好Redis,最好是把Redis Desktop Manager一起安装了,可视化看的舒服一点. 二.代码部分 1.引入库,配置yml 引入Redis依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter

  • Java实现短信验证码的示例代码

    目录 项目需求 需求来由 代码实现 发送验证码方法 注册方法 忘记密码 前端代码 编码中遇到的问题 如何改进 短信验证码相信大家都不陌生吗,但是短信验证码怎么生成的你真的了解吗,本文揭示本人项目中对短信验证码的. 项目需求 用户注册/忘记密码添加短信验证码 需求来由 登录注册页面需要确保用户同一个手机号只关联一个账号确保非人为操作,避免系统用户信息紊乱增加系统安全性 代码实现 同事提供了WebService接口,很好,之前没调过,又增加了困难. 这边用的阿里云的短信服务,废话少说上图,呸,上代码

  • Angular获取手机验证码实现移动端登录注册功能

    之前一直在用jQuery来做项目,使用比较熟练,目前公司要求使用angular来做项目,遇到一个登录模块如下所示,功能有两个方面,一个是点击按钮获取验证码,一个是点击登录验证表单.从用户体验角度来考虑有两个要注意的地方,默认两个按钮应该都是不可点击的,输入正确的手机号时验证码的按钮可点击,当再输入验证码时登录按钮可点击. 代码结构如下: <form name="loginForm" ng-controller="loginCtrl" ng-submit=&qu

随机推荐