package com.szxgl.pars2021.controller; import com.szxgl.pars2021.utils.R; import com.szxgl.pars2021.utils.RedisUtil; import com.szxgl.pars2021.utils.VerifyUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Slf4j @RestController @RequestMapping("/code") public class VerificationCodeController { public static final String RANDOMCODEKEY= "2021_pars_h5:code:RANDOMREDISKEY";//放到session中的key @Value("${spring.profiles.active}") private String activeProfiles; @Autowired private RedisUtil redisUtil; /** * @author XXXXXX * @date 2018年7月11日 * @desc 图形验证码生成 */ @RequestMapping("/createImg") public void createImg(HttpServletRequest request, HttpServletResponse response) throws Exception { String openid = getValue(request.getCookies(), "openid"); if("prod".equals(activeProfiles) && StringUtils.isBlank(openid)){ log.error("openid为空,请求参数"); } try { response.setContentType("image/jpeg");//设置相应类型,告诉浏览器输出的内容为图片 response.setHeader("Pragma", "No-cache");//设置响应头信息,告诉浏览器不要缓存此内容 response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expire", 0); VerifyUtil randomValidateCode = new VerifyUtil(); randomValidateCode.getRandcode(request, response);//输出验证码图片 //将生成的随机验证码存放到redis中 redisUtil.set(RANDOMCODEKEY+openid,request.getSession().getAttribute(RANDOMCODEKEY),Long.parseLong("60")); }catch (Exception e){ log.error("获取验证码异常:", e); } } /** * 获取cookie * @param cookies * @param key * @return */ protected String getValue(Cookie[] cookies, String key) { String value = null; if (null != cookies && cookies.length > 0) { for (Cookie c : cookies) { if (key.equals(c.getName())) { value = c.getValue(); break; } } } return value; } }