public class NotifyController {
@Autowired
private Producer captchaProducer;
@Autowired
private StringRedisTemplate redisTemplate;
/**
* 图形验证码有效期10分钟
*/
private static final long CAPTCHA_CODE_EXPIRED = 60 * 1000 * 10;
/**
* 获取图形验证码
*
* @param request
* @param response
*/
@ApiOperation("获取图形验证码")
@GetMapping("captcha")
public void getCaptcha(HttpServletRequest request, HttpServletResponse response) {
String captchaText = captchaProducer.createText();
log.info("图形验证码:{}", captchaText);
//存储
redisTemplate.opsForValue().set(getCaptchaKey(request),captchaText,CAPTCHA_CODE_EXPIRED,TimeUnit.MILLISECONDS);
//存储
BufferedImage bufferedImage = captchaProducer.createImage(captchaText);
ServletOutputStream outputStream = null;
try {
outputStream = response.getOutputStream();
ImageIO.write(bufferedImage, "jpg", outputStream);
outputStream.flush();
outputStream.close();
} catch (IOException e) {
log.error("获取图形验证码异常:{}", e);
}
}
/**
* 获取缓存的key
* @param request
* @return
*/
private String getCaptchaKey(HttpServletRequest request){
String ip = CommonUtil.getIpAddr(request);
String userAgent = request.getHeader("User-Agent");
String key = "user-service:captcha:"+CommonUtil.MD5(ip+userAgent);
log.info("ip={}",ip);
log.info("userAgent={}",userAgent);
log.info("key={}",key);
return key;
}
} /**
* 获取缓存的key
* @param request
* @return
*/
private String getCaptchaKey(HttpServletRequest request){
String ip = CommonUtil.getIpAddr(request);
String userAgent = request.getHeader("User-Agent");
String key = "user-service:captcha:"+CommonUtil.MD5(ip+userAgent);
log.info("ip={}",ip);
log.info("userAgent={}",userAgent);
log.info("key={}",key);
return key;
} //存储
redisTemplate.opsForValue().set(getCaptchaKey(request),captchaText,CAPTCHA_CODE_EXPIRED,TimeUnit.MILLISECONDS); /**
* 图形验证码有效期10分钟
*/
private static final long CAPTCHA_CODE_EXPIRED = 60 * 1000 * 10; 本文作者为DBC,转载请注明。