版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014087707/article/details/79248554
在前后端端分离的项目中图片验证码怎么获取,以及怎么验证
获取验证码其实不难,关键是后端怎么验证此验证码?
1. 后端生成图片验证码,把字节流发送到前端伪代码:
@RequestMapping(value = "/picture", method =RequestMethod.GET)
public ResponseEntity<byte[]> picture(@PathVariable String phoneNumber, HttpServletResponse response) throws IOException {
//生成验证码
HttpHeaders headers = new HttpHeaders();
headers.put("pictureId",UUID.randomUUID())//标注唯一性
//字节流
ByteArrayOutputStream baos = new ByteArrayOutputStream();//字节输出流
//之前的方式直接写到输出流中
//ImageIO.write(image, "JPEG", response.getOutputStream());
//response.getOutputStream().flush();
//现在返回字节数组
ImageIO.write(image, "JPEG", baos);
byte[] content = baos.toByteArray();
return new ResponseEntity<byte[]>(content, null, HttpStatus.OK);
}
- 后端把pictureId 存到缓存中去,设置一个过期时间.
- 前端拿到数据显示,然后下次请求的时候把pictureId 带上,供后端验证
可选的方式
- 也可以返回base64的图片编码,前端直接显示.更通用些
- 前端生成pictureId 发送到后端,可能会产生相同的pictureId (几率很小)
参考:http://www.cnblogs.com/liminjun88/p/6556493.html