springboot整合阿里云的redis,实现注册验证码校验的基本逻辑

1,下载安装redis(省略)

2,导入依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

3,编写代码

  • 在配置文件中添加(显示在下面的格式有些问题)
  • redis: host: 47.107.41.60
  • 在userService中添加
 @Autowired
 private RedisTemplate redisTemplate;
  • 发送验证码的基本逻辑
 public void sendMessage(String modile) {
 //随机生成6位验证码
        int max = 999999;
        int min = 111111;
        Random random = new Random();
        int code = random.nextInt(max);
        if (code < min)
            code = code + min;
        logger.info("{}的验证码是{}", modile, code);
        System.out.println("验证码是{}"+code);
        //设置3分钟过期
        redisTemplate.opsForValue().set("sms" + modile, code+"", 10, TimeUnit.MINUTES);

        //todo  将验证码和手机号放入rabitmq中
    }

在上面的代码中将验证码存入redis,并设置验证码的过期时间

  • 注册的逻辑
 public void register(User user, String code) {
        //从redis中获取验证码
       String s = (String) redisTemplate.opsForValue().get("sms" + user.getMobile());
        if (s == null)
            throw new RuntimeException("请发送验证码");
        if (s.equals(code)) {
            logger.info("验证码匹配成功");
            user.setId(idWorker.nextId() + "");
            user.setFollowcount(0);//关注数
            user.setFanscount(0);//粉丝数
            user.setOnline(0L);//在线时长
            user.setRegdate(new Date());//注册日期
            user.setUpdatedate(new Date());//更新日期
            user.setLastdate(new Date());//最后登陆日期
            userDao.save(user);
        }
        else
            logger.info("验证码不正确");
    }

**重点:
1,向redis中存数据: **
redisTemplate.opsForValue().set(“sms” + modile, code+"", 10, TimeUnit.MINUTES);
2,从redis中取数据:
String s = (String) redisTemplate.opsForValue().get(“sms” + user.getMobile());

注意:
在存储手机号的时候,要使用long或string类型
如果redis是在阿里云安装的,需要添加安全组配置规则,redis端口号是4379

猜你喜欢

转载自blog.csdn.net/qq_41346335/article/details/86675849