后端生成图形验证码,并进行base64编码生成字符串传至前端,由前端解码显示图形验证码,代码如下:
后端-获取图形验证码base64编码字符串接口:
/**
* @param response
* @return map
* @throws Exception 获取图形验证码接口
*/
@RequestMapping("/getVerifyCode")
@ResponseBody
public Map getVerifyCode(HttpServletResponse response) throws Exception {
Map map = new HashMap();
//第一个参数是生成的验证码,第二个参数是生成的图片
Object[] objs = VerifyUtil.createImage();
//将图片输出给浏览器
BufferedImage image = (BufferedImage) objs[1];
String value = objs[0].toString().toLowerCase();
String key = UUID.randomUUID().toString();
redisUtils.set(key, value, 2, MINUTES);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// 使用ServletOutputStream流可直接输出图片
// ServletOutputStream outputStream = response.getOutputStream();
ImageIO.write(image, "png", outputStream);
Base64 base64 = new Base64();
String pic = new String(base64.encode(outputStream.toByteArray()));
map.put("codeKey", key);
map.put("codePic", pic);
return map;
}
后端-生成图形验证码工具类
import java.awt.*