pars-h5-2021/src/main/java/com/szxgl/pars2021/controller/VerificationCodeController.java
2021-11-23 02:11:47 +08:00

75 lines
2.6 KiB
Java

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