首页 > 编程语言 >Java 界最好用的开源行为验证码工具!

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

时间:2024-12-05 09:45:15浏览次数:6  
标签:Java 验证码 默认 captcha 开源 tianai response

大家好,我是 Java陈序员

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

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

项目介绍

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

项目截图

  • 滑块验证码

  • 旋转验证码

  • 滑动还原验证码

  • 文字点选验证码

快速上手

1、引入依赖

<dependency>
    <groupId>cloud.tianai.captcha</groupId>
    <artifactId>tianai-captcha</artifactId>
    <version>1.5.1</version>
</dependency>

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

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、引入依赖

<dependency>
  <groupId>cloud.tianai.captcha</groupId>
  <artifactId>tianai-captcha-springboot-starter</artifactId>
  <version>1.5.1</version>
</dependency>

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

# 验证码配置,详细请看 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 生成和校验验证码

@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 配置可参考在线文档。

在线文档:http://doc.captcha.tianai.cloud/

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

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

项目地址:https://gitee.com/dromara/tianai-captcha

最后

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

https://github.com/chenyl8848/great-open-source-project

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

https://chencoding.top:8090/#/

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


标签:Java,验证码,默认,captcha,开源,tianai,response
From: https://www.cnblogs.com/codechen8848/p/18585745

相关文章

  • 常用JavaScript 单行代码
    1.不使用临时变量来交换变量的值例如我们想要将a于b的值交换leta=1,b=2;//交换值[a,b]=[b,a];//结果:a=2,b=12.对象解构,让数据访问更便捷const{name,age}={name:'张三',age:23};//结果:name='张三',age=233.浅克隆对象......
  • Java 反射:揭开方法和构造函数的神秘面纱
    Java反射:揭开方法和构造函数的神秘面纱在Java编程的世界中,反射(Reflection)是一项强大而神秘的技术。它允许我们在运行时检查和操作类、方法、字段等,甚至可以调用私有方法或访问私有字段。然而,反射的强大之处也伴随着一些容易混淆的概念,比如getMethods()和getDeclaredMethods......
  • springboot/ssm美食分享系统Java代码web项目美食烹饪笔记分享交流
    springboot/ssm美食分享系统ava美食烹饪笔记分享交流系统web美食源码基于springboot(可改ssm)+vue项目开发语言:Java框架:springboot/可改ssm+vueJDK版本:JDK1.8(或11)服务器:tomcat数据库:mysql5.7(或8.0)数据库工具:Navicat/sqlyog开发软件:eclipse/idea依赖管理包:Maven......
  • springboot/ssm二手书籍交易系统Java二手书商城购物系统web书籍源码
    springboot/ssm二手书籍交易系统Java二手书商城购物系统web书籍源码基于springboot(可改ssm)+vue项目开发语言:Java框架:springboot/可改ssm+vueJDK版本:JDK1.8(或11)服务器:tomcat数据库:mysql5.7(或8.0)数据库工具:Navicat/sqlyog开发软件:eclipse/idea依赖管理包:Maven......
  • springboot/ssm线上教育培训办公系统Java代码web项目在线课程作业源码
    springboot/ssm线上教育培训办公系统Java代码web项目在线课程作业源码基于springboot(可改ssm)+html+vue项目开发语言:Java框架:springboot/可改ssm+vueJDK版本:JDK1.8(或11)服务器:tomcat数据库:mysql5.7(或8.0)数据库工具:Navicat/sqlyog开发软件:eclipse/idea依赖管理......
  • 【Java面试题 | 解答】Dubbo面试八连问,这些你都能答上来吗?
    Dubbo是什么?Dubbo能做什么?Dubbo内置了哪几种服务容器?Dubbo核心的配置有哪些?Dubbo有哪几种集群容错方案,默认是哪种?Dubbo有哪几种负载均衡策略,默认是哪种?Dubbo默认使用的是什么通信框架,还有别的选择吗?你觉得用Dubbo好还是SpringCloud好?1.Dubbo是什么?Dubbo是......
  • JavaSwing JTextArea
    try{BeautyEyeLNFHelper.frameBorderStyle=BeautyEyeLNFHelper.FrameBorderStyle.osLookAndFeelDecorated;//UIManager.put("RootPane.setupButtonVisible",false);org.jb2011.lnf.beautyeye.BeautyEyeLNFHelpe......
  • CF 32B博尔兹(Java实现)
    题目分析:    就是三种情况的摩斯密码解密,分别有组合:“.”、“-.”、“--”。由此可见“.”不能作为两位值的开头思路分析:    输入:整行输入再转为字符数组    数据处理:从首位到倒数第二位遍历,根据三种情况存入对应值给答案集合代码:importjava.u......
  • java中面向过程和面向对象区别?
    重要信息官网:https://ais.cn/u/vEbMBz......
  • JavaSwing JTextField
    try{BeautyEyeLNFHelper.frameBorderStyle=BeautyEyeLNFHelper.FrameBorderStyle.osLookAndFeelDecorated;//UIManager.put("RootPane.setupButtonVisible",false);org.jb2011.lnf.beautyeye.BeautyEyeLNFHelpe......