public String image() {
return “verify_code”;
}
1.2 html
style=“color:black;”>看不清?
验证
1.3.获取验证码图片
@RequestMapping(value=“image”,method=RequestMethod.GET)
public void authImage() throws IOException {
response.setHeader(“Pragma”, “No-cache”);
response.setHeader(“Cache-Control”, “no-cache”);
response.setDateHeader(“Expires”, 0);
response.setContentType(“image/jpeg”);
// 生成随机字串
String verifyCode = VerifyCodeUtils.generateVerifyCode(4);
session.removeAttribute(“verCode”);
session.removeAttribute(“codeTime”);
session.setAttribute(“verCode”, verifyCode.toLowerCase());
session.setAttribute(“codeTime”, LocalDateTime.now());
// 生成图片
int w = 100, h = 30;
OutputStream out = response.getOutputStream();
VerifyCodeUtils.outputImage(w, h, out, verifyCode);
}
1.4 核对验证码
@RequestMapping(“valid”)
@ResponseBody
public Wrapper validImage(String code, @SessionAttribute(“verCode”) Object verCode){
if (null == verCode) {
request.setAttribute(“error”, “验证码已失效,请重新输入”);
return WrapMapper.wrap(Wrapper.ERROR_CODE,“验证码已失效,请重新输入”);
}
String verCodeStr = verCode.toString();
LocalDateTime localDateTime = (LocalDateTime)session.getAttribute(“codeTime”);
long past = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
long now = LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
if(verCodeStr == null || code == null || code.isEmpty() || !verCodeStr.equalsIgnoreCase(code)){ </