java实现验证码发送

157 阅读1分钟

验证码是我们登录中常用的功能,如何生成验证码图片,并发送验证码图片到前端就是一个需要解决的问题。

以下介绍生成验证码,发送验证码的步骤流程:

1,首先需要生成验证码文字,然后将文字转成图片,代码如下,我会一行一行解释

// 生成图片的文本文字
String capText = captchaProducerMath.createText();  
// 截取数字计算公式的部分
capStr = capText.substring(0, capText.lastIndexOf("@"));
// 截取数字计算公式结果部分
code = capText.substring(capText.lastIndexOf("@") + 1);
// 根据数字计算公司文本生成对应的图片
image = captchaProducerMath.createImage(capStr);

2,设置数字验证码结果过期时间

// verifyKey 对象的键名,code对象的键值,CAPTCHA_EXPIRATION过期时间,MINUTES过期时间为分钟。
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);

3,将图片写入到输出流中

// image为对应的图片,jpg为图片格式,os为输出流。
ImageIO.write(image, "jpg", os);

4,将图片base64编码,然后放到返回结果中。

// Base64.encode编码输出的文件流,return ajax返回结果
ajax.put("img", Base64.encode(os.toByteArray()));
return ajax;