springboot生成验证码,将验证码存入redis,验证验证码

@Api(tags = "验证码")
@RestController
@RequestMapping("/validateCode")
public class ValidateCodeController {
    
    

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @ApiOperation("生成验证码")
    @PostMapping("/sendValidateCode")
    public Object sendValidateCode(String telephone) {
    
    
        Random random = new SecureRandom();
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < 10; i++) {
    
    
            int num = random.nextInt(9);
            if (num%2==0) {
    
    
                stringBuilder.append(num);
            } else {
    
    
                stringBuilder.append((char) (65 + random.nextInt(26)));
            }
        }
        String validateCode = stringBuilder.toString();
        ValueOperations forValue = redisTemplate.opsForValue();
        forValue.set(telephone, validateCode);
        redisTemplate.expire(telephone,24*60*60,TimeUnit.SECONDS);
        return ResultJson.ok(validateCode);
    }


    @ApiOperation("验证验证码")
    @PostMapping("/checkValidateCode")
    public Object checkValidateCode(String telephone, String validateCode) {
    
    
        if (telephone==null || validateCode==null) {
    
    
            return ResultJson.failure(ResultCode.BAD_REQUEST);
        }
        //redis中的验证码
        ValueOperations<String, String> forValue = redisTemplate.opsForValue();
        String validateCodeInRedis = forValue.get(telephone);
        //校验
        if (validateCode!=null && validateCodeInRedis!=null && validateCode.equals(validateCodeInRedis)) {
    
    
            return ResultJson.ok("验证成功");
        }
        return ResultJson.failure(ResultCode.UNAUTHORIZED);
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_45121502/article/details/105812519
今日推荐