欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Redis 实现手机验证码功能

最编程 2024-04-08 13:01:34
...
public class PhoneCode { public static void main(String[] args) { //模拟验证码发送 verifyCode("12345678910"); } //1.生成6位数字验证码 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; } //2. 每个手机每天只能发送三次,验证放在redis中,设置过期时间 public static void verifyCode(String phone) { //连接redis Jedis jedis = new Jedis("47.107.53.146", 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 vscode = getCode(); jedis.setex(codeKey, 120, vscode); jedis.close(); } //3.验证码校验 public static void getRedisCode(String phone,String code) { //从redis获取验证码 Jedis jedis = new Jedis("47.107.53.146",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(); } }