Java 界最好用的開源行為驗證碼工具!

Java陈序员發表於2024-12-05

大家好,我是 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/#/

大家的點贊、收藏和評論都是對作者的支援,如文章對你有幫助還請點贊轉發支援下,謝謝!

相關文章