在前后端端分离的项目中图片验证码怎么获取,以及怎么验证
获取验证码其实不难,关键是后端怎么验证此验证码?
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", 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