当前位置: 首页 > news >正文

tianai-captcha SpringBoot 行为验证码 支持滑动、旋转、文字点选等

文章目录

    • 概要
    • 快速接入
    • 技术细节
    • 小结

概要

提示:这里可以添加技术概要

tianai-captcha 支持的行为验证码类型

  • 滑块验证码
  • 旋转验证码
  • 滑动还原验证码
  • 文字点选验证码

快速接入

请使用SpringBoot脚手架工具tianai-captcha-springboot-starter;

该工具对tianai-captcha验证码进行了封装,使其使用更加方便快捷

技术细节

提示:这里可以添加技术细节

  • 导入依赖
<!-- maven 导入 -->
<dependency><groupId>cloud.tianai.captcha</groupId><artifactId>tianai-captcha</artifactId><version>1.5.0</version>
</dependency>
  • 构建 ImageCaptchaApplication负责生成和校验验证码
public class ApplicationTest {public static void main(String[] args) {ImageCaptchaApplication application = TACBuilder.builder().addDefaultTemplate() // 添加默认模板// 给滑块验证码 添加背景图片,宽高为600*360, Resource 参数1为 classpath/file/url , 参数2 为具体url .addResource("SLIDER", new Resource("classpath", "META-INF/cut-image/resource/1.jpg")) // 滑块验证的背景图.addResource("WORD_IMAGE_CLICK", new Resource("classpath", "META-INF/cut-image/resource/1.jpg")) // 文字点选的背景图.addResource("ROTATE", new Resource("classpath", "META-INF/cut-image/resource/1.jpg")) // 旋转验证的背景图.build();// 生成验证码数据, 可以将该数据直接返回给前端 , 可配合 tianai-captcha-web-sdk 使用// 支持生成 滑动验证码(SLIDER)、旋转验证码(ROTATE)、滑动还原验证码(CONCAT)、文字点选验证码(WORD_IMAGE_CLICK)CaptchaResponse<ImageCaptchaVO> res = application.generateCaptcha("SLIDER");System.out.println(res);// 校验验证码, ImageCaptchaTrack 和 id 均为前端传开的参数, 可将 valid数据直接返回给 前端// 注意: 该项目只负责生成和校验验证码数据, 至于二次验证等需要自行扩展String id = res.getId();ImageCaptchaTrack imageCaptchaTrack = null;ApiResponse<?> valid = application.matching(id, imageCaptchaTrack);System.out.println(valid.isSuccess());// 扩展: 一个简单的二次验证CacheStore cacheStore = new LocalCacheStore();if (valid.isSuccess()) {// 如果验证成功,生成一个token并存储, 将该token返回给客户端,客户端下次请求数据时携带该token, 后台判断是否有效String token = UUID.randomUUID().toString();cacheStore.setCache(token, new AnyMap(), 5L, TimeUnit.MINUTES);}}
}

小结

可以down下来学习一下 https://gitee.com/explore/captcha

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 线程池概述
  • 在 FastAPI 项目中使用 Python 注解类型实现通用返回结构
  • docker的基本管理和应用
  • Linux磁盘管理与文件系统(二):实用工具和命令、fdisk分区示例
  • 【QGroundControl二次开发】十. QT添加GStreamer视频播放同时保存
  • 【C++ 秘籍】解锁 stack、queue 和 priority_queue 及容器适配器的神奇世界
  • haproxy七层代理
  • C++构造和析构
  • `torch.device(“mps“)`、pip华为镜像源dockerfile以及后缀安装
  • 华为OD笔试
  • C#开启和关闭UAC功能
  • MySQL —— 约束
  • 周报 | 24.8.5-24.8.11文章汇总
  • Ubuntu安装MySQL5.7 + Apache + PHP + 禅道 保姆及教程
  • 糟糕界面集锦-控件篇05
  • 【css3】浏览器内核及其兼容性
  • 2017年终总结、随想
  • C++入门教程(10):for 语句
  • Codepen 每日精选(2018-3-25)
  • cookie和session
  • C语言笔记(第一章:C语言编程)
  • gitlab-ci配置详解(一)
  • Git的一些常用操作
  • go语言学习初探(一)
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Java-详解HashMap
  • JS数组方法汇总
  • Logstash 参考指南(目录)
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • React Native移动开发实战-3-实现页面间的数据传递
  • react 代码优化(一) ——事件处理
  • ucore操作系统实验笔记 - 重新理解中断
  • Vue ES6 Jade Scss Webpack Gulp
  • VuePress 静态网站生成
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 浮动相关
  • 力扣(LeetCode)21
  • 实习面试笔记
  • 手写一个CommonJS打包工具(一)
  • 学习HTTP相关知识笔记
  • 译米田引理
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​ssh免密码登录设置及问题总结
  • #DBA杂记1
  • #etcd#安装时出错
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (3)nginx 配置(nginx.conf)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (剑指Offer)面试题41:和为s的连续正数序列