Bootstrap

easy-captcha结合redis缓存实现验证码功能

1.constants定义缓存的key以及过期时间

public class Constants {
    //验证码
    public static final String REDIS_KEY_CHECK_CODE = "esaychat:checkcode";

    //过期时间一分钟
    public static final Integer REDIS_TIME_ONE_MIN = 60;
}

2.Controller调用redis工具类的setex方法写入redis缓存,实现验证码功能

@RestController("accountController")
@RequestMapping("/account")
@Validated//参数校验
public class AccountController extends ABaseController {

    private static  final Logger logger = LoggerFactory.getLogger(AccountController.class);

    @Resource//注入redis
    private RedisUtils redisUtils;

    @RequestMapping("/checkCode")
    public ResponseVo checkCode(){
        // 三个参数分别为宽、高、位数
        GifCaptcha gifCaptcha = new GifCaptcha(100, 42, 4);
        // 设置类型:字母数字混合
        gifCaptcha.setCharType(Captcha.TYPE_DEFAULT);
        String code = gifCaptcha.text();
        String checkCodeKey = UUID.randomUUID().toString();
        redisUtils.setex(Constants.REDIS_KEY_CHECK_CODE,code,Constants.REDIS_TIME_ONE_MIN * 10);
        //logger.info("验证码是{}",code);
        //转换为Base64编码字符串
        String checkCodeBase64 = gifCaptcha.toBase64();
        Map<String,String> result = new HashMap<>();
        result.put("checkCode",checkCodeBase64);
        result.put("checkCodeKey",checkCodeKey);
        return getSuccessResponseVo(result);
    }
}

;