1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| @Api(tags = "通知模块") @RestController @RequestMapping("api/user/v1") @Slf4j public class NotifyController {
@Autowired private Producer captchaProducer;
@Autowired private StringRedisTemplate redisTemplate;
private static final long CAPTCHA_CODE_EXPIRED = 60 * 1000 * 10;
@GetMapping("/captcha") public void getCaptcha(HttpServletRequest request, HttpServletResponse response) { String producerText = captchaProducer.createText(); log.info("图形验证码:{}", producerText); String cacheKey = getCaptchaKey(request); redisTemplate.opsForValue() .set(cacheKey,producerText,CAPTCHA_CODE_EXPIRED, TimeUnit.MILLISECONDS);
BufferedImage producerImage = captchaProducer.createImage(producerText); ServletOutputStream outputStream = null; try { response.setDateHeader("Expires", 0); response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); response.addHeader("Cache-Control", "create_date-check=0, pre-check=0"); response.setHeader("Pragma", "no-cache"); outputStream = response.getOutputStream(); ImageIO.write(producerImage, "jpg", outputStream); outputStream.flush(); outputStream.close(); }catch(IOException e) { log.error("获取图形验证码错误:{}", e.getMessage()); } }
@GetMapping("/getValue") public String getCacheValue(HttpServletRequest request) { String captchaKey = getCaptchaKey(request); return redisTemplate.opsForValue().get(captchaKey); }
private String getCaptchaKey(HttpServletRequest request){ String ip = CommonUtil.getIpAddr(request); String userAgent = request.getHeader("User-Agent"); return "user-service:captcha:"+CommonUtil.MD5(ip+userAgent); } }
|