前言:
在登录时校验验证码登录
<!-- 导入hutool工具类 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.16</version>
</dependency>
<!-- IdWorker生成所需包 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.imadcn.framework</groupId>
<artifactId>idworker</artifactId>
<version>1.5.0</version>
</dependency>
示例代码:
一.直接返回图片
@ApiOperation("获取图形验证码")
@GetMapping("/identifyImage")
public Result<String> identifyImage(HttpServletResponse response,
@ApiParam(value = "图形验证码id,无值:生成验证码,有值:刷新验证码")
@RequestParam(name = "codeId", required = false) String codeId) throws IOException {
// 创建验证码,设置宽、高、长度、干扰线数量
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 90, 4, 100);
// 获取验证码字符串,赋值code
String code = lineCaptcha.getCode();
/// 将code保存到redi中,key:IdWorker.getId()生成基于雪花算法改良,val:code验证码值
/// 并设置过期时间,第一次获取生成一次key,后续若用户看不清换一张,将codeId传递回来,覆盖原来redis的值
// if (codeId == null) {
// // IdWorker.getId():IdWorker工具类生成唯一ID,并转换成String类型
// codeId = String.valueOf(IdWorker.getId());
// // 将codeId、code.toUpperCase()、过期时间600秒:存储入Redis中
// // code.toUpperCase():code装换成大写形式存储
// redisUtil.set(codeId,code.toUpperCase(),600);
// } else {
// redisUtil.set(codeId,code.toUpperCase(),600);
// }
/* 图片方式传递 */
// 将图片验证码codeId设置请求头中
response.setHeader("codeId", codeId);
// 获取向客户端发送响应数据的输出流
try (ServletOutputStream outputStream = response.getOutputStream()) {
// 验证码图片数据写入到输出流
lineCaptcha.write(outputStream);
} catch (Exception e) {
throw new RuntimeException("图形验证码输出错误");
}
return ResultUtil.success(codeId);
/* base64方式传递 新建 IdentifyImageResp类 image/codeId 属性 */
// IdentifyImageResp identifyImageResp = new IdentifyImageResp();
// identifyImageResp.setCodeId(codeId);
// identifyImageResp.setImage(lineCaptcha.getImageBase64Data());
// return ResultUtil.success(identifyImageResp);
}
图片方式: base64方式结果:
标签:lineCaptcha,java,String,验证码,code,codeId,identifyImageResp,图片 From: https://www.cnblogs.com/Kikai/p/17876616.html