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);
}
}