软件编程
位置:首页>> 软件编程>> java编程>> 如何使用Java redis实现发送手机验证码功能

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

作者:护花使者  发布时间:2023-11-26 17:25:00 

标签: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");
   //checkValidation("769897","15005076571");
 }

static void getValidation(String tel) {
   //主机、端口
   Jedis jedis = new Jedis("myhost", 6379);
   //密码
   jedis.auth("mypassword");
   try {
     //获取电话号码
     String phoneNo = tel;
     //本人用1库进行测试
     jedis.select(1);
     String countKey = phoneNo + ":count";
     String codeKey = phoneNo + ":code";
     //获取指定的电话号码发送的验证码次数
     String cnt = jedis.get(countKey);
     //对次数进行判断
     if (cnt == null) {
       //没有发送过验证码
       jedis.setex(countKey, 60 * 60 * 24, "1");
       //发送验证码,假设生成的验证码
       StringBuffer code = new StringBuffer();
       for (int i = 0; i < 6; i++) {
         code.append(new Random().nextInt(10));
       }
       System.out.println("code:" + code);
       //缓存中添加验证码
       jedis.setex(codeKey, 60 * 2, code.toString());
     } else {
       if (Integer.parseInt(cnt) < 3) {
         //发送验证码,假设生成的验证码
         StringBuffer code = new StringBuffer();
         for (int i = 0; i < 6; i++) {
           code.append(new Random().nextInt(10));
         }
         System.out.println("code:" + code);
         //缓存中添加验证码
         jedis.setex(codeKey, 60 * 2, code.toString());
         //递增手机发送数量
         jedis.incr(countKey);
       } else {
         //返回超出3次,禁止发送
         System.out.println("超出3次,禁止发送");
       }
     }
   } catch (Exception e) {
     //这边其实是需要回滚下redis
     e.printStackTrace();
   } finally {
     //关闭redis
     if (jedis != null) {
       jedis.close();
     }
   }
 }

static void checkValidation(String code, String tel) {
   Jedis jedis = null;
   try {
     jedis = new Jedis("myhost", 6379);
     //密码
     jedis.auth("mypassword");
     jedis.select(1);
     String codeKey = tel + ":code";
     String validation = jedis.get(codeKey);
     if (validation == null) {
       System.out.println("验证码未发送或者失效");
     } else {
       if (validation.equals(code)) {
         System.out.println("验证成功");
       } else {
         System.out.println("验证失败");
       }
     }
   } catch (Exception e) {
     e.printStackTrace();
   } finally {
     if (jedis != null) {
       jedis.close();
     }
   }
 }
}

来源:https://www.cnblogs.com/chenmz1995/p/12562328.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com