java生成数字运算验证码

第一步,引入依赖

<!--验证码依赖-->
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>1.6.2</version>
</dependency>
 
<!-- 算数验证码使用 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.14</version>
<optional>true</optional>
</dependency>
 
注意:如果使用jdk17报错:java.lang.NullPointerException: Cannot invoke “javax.script.ScriptEngine.eval(String)“ because “engi
添加依赖可以解决  原文链接https://blog.csdn.net/u011410254/article/details/123735205
<!--解决图片验证码报错javax.script.ScriptEngine.eval(String)-->
<dependency>
<groupId>org.openjdk.nashorn</groupId>
<artifactId>nashorn-core</artifactId>
<version>15.3</version>
</dependency>
 
//生成验证码controller层代码
@GetMapping("/captcha")
public ApiResult getCode() {
// 创建一个HashMap来存储验证码信息
Map<String, Object> map = new HashMap<>(2);
// 生成一个随机UUID
String uuid = UUID.randomUUID().toString();
// 创建一个用于存储验证码的key,格式为:login_tokens:uuid
String verifyKey = "login_tokens:" + uuid;
String code;
// 创建一个ArithmeticCaptcha实例,用于生成数学验证码
ArithmeticCaptcha captcha = new ArithmeticCaptcha(111, 36 , 2);
// 获取数学验证码的文本
code = captcha.text();
// 将验证码的uuid和图片保存到HashMap中
map.put("uuid", uuid);
map.put("img", captcha.toBase64());
// 将验证码信息保存到Redis中,设置过期时间为2分钟
redisService.setCacheObject(verifyKey, code, 2L, TimeUnit.MINUTES);
// 返回验证码信息
return ApiResult.success(map);
}
 
 
生成一串base64字符串   base64转图片地址:https://products.aspose.app/imaging/zh-hans/conversion/base64-to-image
 
posted @ 2024-05-16 18:07  xd99  阅读(49)  评论(0编辑  收藏  举报