littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于Spring Boot的图形验证码生成系统

项目简介

本项目是基于Spring Boot框架开发的图形验证码生成系统,能生成多种类型的验证码,如静态图片验证码、GIF动画验证码、中文验证码和算术验证码。该系统可用于Java Web和JavaSE项目,且针对Spring Boot 3和JDK 17做了优化。

项目的主要特性和功能

  • 支持多种验证码类型,包括静态图片验证码、GIF动画验证码、中文验证码和算术验证码。
  • 可自定义验证码的宽度、高度、长度、字体和颜色。
  • 支持前后端分离项目,验证码能存储在Redis中。
  • 支持将生成的验证码转换为Base64编码的字符串,便于在HTML中直接嵌入。
  • 特别优化了对Spring Boot 3和JDK 17的支持。

安装使用步骤

假设用户已经下载了本项目的源码文件。

1. 导入项目

使用Gradle

build.gradle文件中添加以下依赖: groovy dependencies { implementation 'top.knos:lead-captcha:0.0.2' }

使用Maven

pom.xml文件中添加以下依赖: xml <dependencies> <dependency> <artifactId>lead-captcha</artifactId> <version>0.0.2</version> </dependency> </dependencies>

2. 在Spring Boot项目中使用

生成验证码

在Spring Boot控制器中生成验证码并将其存储在session中: ```java @Controller public class CaptchaController {

@RequestMapping("/captcha")
public void captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
    SessionCaptchaUtil.out(request, response);
}

} 前端HTML代码:html ```

验证验证码

在登录控制器中验证用户输入的验证码: ```java @Controller public class LoginController {

@PostMapping("/login")
public JsonResult login(String username, String password, String verCode) {
    if (!CaptchaUtil.ver(verCode, request)) {
        CaptchaUtil.clear(request);  // 清除session中的验证码
        return JsonResult.error("验证码不正确");
    }
}

} ```

3. 自定义验证码设置

设置验证码的宽高和位数

```java @Controller public class CaptchaController {

@RequestMapping("/captcha")
public void captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
    // 设置位数
    CaptchaUtil.out(5, request, response);
    // 设置宽、高、位数
    CaptchaUtil.out(130, 48, 5, request, response);

    // 使用gif验证码
    GifCaptcha gifCaptcha = new GifCaptcha(130, 48, 4);
    CaptchaUtil.out(gifCaptcha, request, response);
}

} ```

4. 前后端分离项目的使用

在前后端分离项目中,验证码可以存储在Redis中: ```java @Controller public class CaptchaController { @Autowired private RedisUtil redisUtil;

@ResponseBody
@RequestMapping("/captcha")
public JsonResult captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
    SpecCaptcha pngCaptcha = new SpecCaptcha(130, 48, 5);
    String verCode = pngCaptcha.text().toLowerCase();
    String key = UUID.randomUUID().toString();
    // 存入redis并设置过期时间为30分钟
    redisUtil.setEx(key, verCode, 30, TimeUnit.MINUTES);
    // 将key和base64返回给前端
    return JsonResult.ok().put("key", key).put("image", pngCaptcha.toBase64());
}

@ResponseBody
@PostMapping("/login")
public JsonResult login(String username, String password, String verCode, String verKey) {
    // 获取redis中的验证码
    String redisCode = redisUtil.get(verKey);
    // 判断验证码
    if (verCode == null || !redisCode.equals(verCode.trim().toLowerCase())) {
        return JsonResult.error("验证码不正确");
    }
}

} 前端使用Ajax获取验证码:html

``` 通过以上步骤,可在Spring Boot项目中集成并使用本图形验证码生成系统。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】