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,转载请注明。