SpringSecurity实现图形验证码
1.开发生成图形验证码接口
-> 封装ImageCode对象,来存放图片验证码的内容、图片以及有效时间
public class ImageCode {
private BufferedImage image;// 图片
private String code;// 验证码
private LocalDateTime expireTime;// 有效时间
public ImageCode(BufferedImage image, String code, int expireIn) {
this.image = image;
this.code = code;
// 出入一个秒数,自动转为时间,如过期时间为60s,这里的expireIn就是60,转换为当前时间上加上这个秒数
this.expireTime = LocalDateTime.now().plusSeconds(expireIn);
}
public ImageCode(BufferedImage image, String code, LocalDateTime expireTime) {
this.image = image;
this.code = code;
this.expireTime = expireTime;
}
public BufferedImage getImage() {
return image;
}
public void setImage(BufferedImage image) {
this.image = image;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public LocalDateTime getExpireTime() {
return expireTime;
}
public void setExpireTime(LocalDateTime expireTime) {
this.expireTime = expireTime;
}
}
-> 写一个Controller用于生成图片和校验验证码
public class ValidateCodeController {
private static final String SESSION_KEY = "SESSION_KEY_IMAGE_CODE";
private SessionStrategy sessionStrategy = new HttpSessionSessionStrategy();
@GetMapping("/code/image")
public void createCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 根据随机数生成图片
ImageCode imageCode = createImageCode(request);
// 将随机数存到session中
sessionStrategy.setAttribute(new ServletWebReque