Java 界最好用的开源行为验证码工具!

大家好,我是 Java陈序员

今天,给大家介绍一个开源的基于 Java 实现的行为验证码工具!

关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。

项目介绍

TIANAI-CAPTCHA ------ 天爱验证码,基于 Java 实现的开源行为验证码,涵盖滑块验证码、旋转验证码、滑动还原验证码、文字点选验证码等等。

项目截图

  • 滑块验证码

  • 旋转验证码

  • 滑动还原验证码

  • 文字点选验证码

快速上手

1、引入依赖

xml 复制代码
<dependency>
    <groupId>cloud.tianai.captcha</groupId>
    <artifactId>tianai-captcha</artifactId>
    <version>1.5.1</version>
</dependency>

2、使用 ImageCaptchaApplication 生成和校验验证码

java 复制代码
public class TianAiCaptcha {

    public static void main(String[] args) {

        // 1、构建 ImageCaptchaApplication
        ImageCaptchaApplication imageCaptchaApplication = TACBuilder.builder()
                // 1.1 添加默认模板 -- 可自定义添加模板
                .addDefaultTemplate()
                // 1.2 添加验证码资源信息 参数一:验证码类型(参考 CaptchaTypeConstant) 参数二:Resource("classpath/file/url", "图片路径")
                // 添加【滑块验证码】资源,背景图来自类路径下 背景图大小为:600 * 360
                .addResource(CaptchaTypeConstant.SLIDER, new Resource("classpath", "META-INF/cut-image/resource/1.jpg"))
                // 1.2.1 添加【旋转验证码】资源,背景图来自文件系统
                .addResource(CaptchaTypeConstant.ROTATE, new Resource("file", "E:\\CodeChen.png"))
                // 1.2.2 添加【滑动还原验证码】资源,背景图来自远程地址
                .addResource(CaptchaTypeConstant.CONCAT, new Resource("url", "https://chencoding.top:8090/_media/logo_2.png"))
                // 1.2.3 添加【文字点验证码】资源,背景图来自类路径下
                .addResource(CaptchaTypeConstant.WORD_IMAGE_CLICK, new Resource("classpath", "META-INF/cut-image/resource/1.jpg"))
                .build();

        // 2、生成验证码
        // 2.1 生成验证码的类型必须在 ImageCaptchaApplication 先添加对应的资源,否则会提示:【随机获取资源错误,store中资源为空, type:SLIDER,tag:null】
        CaptchaResponse<ImageCaptchaVO> response = imageCaptchaApplication.generateCaptcha(CaptchaTypeConstant.CONCAT);

        System.out.println(response);
        // 2.2 验证码模板图片
        System.out.println(response.getCaptcha().getTemplateImage());
        // 2.3 验证码背景图片
        System.out.println(response.getCaptcha().getBackgroundImage());

        // 3、校验验证码:id 和 ImageCaptchaTrack 需要前端传来参数
        String id = response.getId();
        ImageCaptchaTrack imageCaptchaTrack = new ImageCaptchaTrack();

        ApiResponse<?> valid = imageCaptchaApplication.matching(id, imageCaptchaTrack);
        System.out.println(valid.isSuccess());

    }
}

3、更多 API 可参考文末的在线文档。

SpringBoot 项目集成

1、引入依赖

xml 复制代码
<dependency>
  <groupId>cloud.tianai.captcha</groupId>
  <artifactId>tianai-captcha-springboot-starter</artifactId>
  <version>1.5.1</version>
</dependency>

2、配置验证码生成校验相关配置

yaml 复制代码
# 验证码配置,详细请看 cloud.tianai.captcha.autoconfiguration.ImageCaptchaProperties 类
captcha:
  # 如果项目中使用到了 Redis, 滑块验证码会自动把验证码数据存到 Redis 中,这里配置 Redis 的 key 的前缀 默认是 captcha:slider
  prefix: captcha
  # 验证码过期时间,默认:2 分钟,单位:毫秒
  expire:
    # 默认缓存时间 2分钟
    default: 10000
    # 针对【点选验证码】的配置,因为点选验证码验证比较慢,把过期时间调整大一些
    WORD_IMAGE_CLICK: 20000
  # 使用加载系统自带的资源,默认是 false(这里系统的默认资源包含滑动验证码模板/旋转验证码模板,如果想使用系统的模板,这里设置为true)
  init-default-resource: true
  # 缓存控制,默认为 false 不开启
  local-cache-enabled: true
  # 验证码会提前缓存一些生成好的验证数据,默认是 20
  local-cache-size: 20
  # 缓存拉取失败后等待时间 默认是 5 秒钟
  local-cache-wait-time: 5000
  # 缓存检查间隔 默认是 2 秒钟
  local-cache-period: 2000
  # 配置字体包,供文字点选验证码使用,可以配置多个,不配置使用默认的字体
  font-path:
    - classpath:font/SimHei.ttf
  secondary:
    # 二次验证,默认 false 不开启
    enabled: false
    # 二次验证过期时间,默认 2 分钟
    expire: 120000
    # 二次验证缓存 key 前缀,默认是 captcha:secondary
    keyPrefix: "captcha:secondary"

3、使用 ImageCaptchaApplication 生成和校验验证码

java 复制代码
@RestController
@RequestMapping("captcha")
public class CaptchaController {

    @Autowired
    private ImageCaptchaApplication imageCaptchaApplication;

    @GetMapping("/generate")
    public Result<CaptchaResponse<ImageCaptchaVO> > generate() {
        CaptchaResponse<ImageCaptchaVO> response = imageCaptchaApplication.generateCaptcha(CaptchaTypeConstant.SLIDER);

        return Result.success(response);
    }

    @PostMapping("/valid/${id}")
    public Result<Boolean> valid(@PathVariable String id,
                                 @RequestBody ImageCaptchaTrack imageCaptchaTrack) {

        boolean valid = imageCaptchaApplication.matching(id, imageCaptchaTrack).isSuccess();

        return Result.success(valid);
    }
}

4、更多 API 可参考文末的在线文档。

TIANAI-CAPTCHA 除了提供后端集成的 SDK, 还提供了前端集成的 SDK, 这里不再赘述,相关使用以及更多的 API 配置可参考在线文档。

arduino 复制代码
在线文档:http://doc.captcha.tianai.cloud/

TIANAI-CAPTCHA 提供了多种行为验证码的快速集成,可以说是 Java 界中最好用的开源行为验证码工具。

如果开发中,需要涉及到验证码设计,可以试试使用~

arduino 复制代码
项目地址:https://gitee.com/dromara/tianai-captcha

最后

推荐的开源项目已经收录到 GitHub 项目,欢迎 Star

bash 复制代码
https://github.com/chenyl8848/great-open-source-project

或者访问网站,进行在线浏览:

bash 复制代码
https://chencoding.top:8090/#/

大家的点赞、收藏和评论都是对作者的支持,如文章对你有帮助还请点赞转发支持下,谢谢!


相关推荐
咩咩啃树皮6 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚6 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
大模型码小白8 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司8 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地9 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun3141599 小时前
TCP超时重传机制是为了解决什么问题?
java
二宝哥10 小时前
CentOS 7.9 系统下 Redis 5.0.4 单机安装与源码编译安装指南
redis·centos
莫逸风12 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
隔窗听雨眠12 小时前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生
z1234567898612 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程