公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!
csdh11 2025-01-16 19:13 23 浏览
1. 认识 AJ-Captcha
AJ-Captcha 是一个开源的行为验证码工具库,包含滑动拼图、文字点选两种方式
gitee 项目网址:
https://gitee.com/anji-plus/captcha
2. 后端 springboot 整合 AJ-Captcha
技术栈:
- springboot
- redis
- AJ-Captcha
2.1 新建 Springboot 项目
新建 springboot 项目,引入依赖
<!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- captcha 图形验证码-->
<dependency>
<groupId>com.anji-plus</groupId>
<artifactId>spring-boot-starter-captcha</artifactId>
<version>1.3.0</version>
</dependency>
2.2 新增 Redis 配置和 CaptchaCache 配置
Redis 配置
@Configuration
public class RedisConfig {
@Resource
private RedisConnectionFactory factory;
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);
redisTemplate.setHashKeySerializer(stringRedisSerializer);
redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
Captcha 配置: 主要是配置 Redis,用来缓存验证码图片等相关信息
@Service
public class CaptchaCacheServiceRedis implements CaptchaCacheService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Override
public String type() {
return "redis";
}
@Override
public void set(String key, String value, long expiresInSeconds) {
stringRedisTemplate.opsForValue().set(key, value, expiresInSeconds, TimeUnit.SECONDS);
}
@Override
public boolean exists(String key) {
return stringRedisTemplate.hasKey(key);
}
@Override
public void delete(String key) {
stringRedisTemplate.delete(key);
}
@Override
public String get(String key) {
return stringRedisTemplate.opsForValue().get(key);
}
}
2.3 在 Resources 目录下配置 CaptchaCache 路径
在 resources 目录下新建 META-INF,在 META-INF 目录下新建 services 目录,在 services 目录下新建 com.anji.captcha.service.CaptchaCacheService 的文件,内容指向 CaptchaCacheService 的配置路径。
2.4 配置 yml
主要是 redis 和 aj-captcha 的配置
server:
port: 8088
servlet:
context-path: /zhifou
spring:
redis:
host: xxxxx
port: 6379
password: xxxxxx
database: 0
# 滑块验证码
aj:
captcha:
# 缓存类型
cache-type: redis
# blockPuzzle 滑块 clickWord 文字点选 default默认两者都实例化
type: blockPuzzle
# 校验滑动拼图允许误差偏移量(默认5像素)
slip-offset: 5
# aes加密坐标开启或者禁用(true|false)
aes-status: true
# 滑动干扰项(0/1/2)
interference-options: 0
# 右下角水印
water-mark: "知否技术"
3. 前端 Vue3 整合 AJ-Captcha
3.1 安装配置 vue3 项目
新建 vue3 项目,分别安装 axios 和 crypto-js 库
npm install axios --save
npm install crypto-js --save
3.2 拷贝 AJ-captcha 的核心前端组件:verifition
进入 AJ-captcha 的 gitee 网址,点击克隆/下载。克隆该项目,或者下载 zip 文件。
https://gitee.com/anji-plus/captcha
找到 view/vue3/src/components 目录,拷贝 verifition 文件夹到自己的项目中
3.3 配置 AJ-captcha 的 axios
这里我是调用自己封装的 axios
3.4 配置 vue3 项目请求后台的接口路径
3.5 新建登录页面,添加验证码组件
这里我直接在 App.vue 页面新增一个简单的登录模块,然后导入 AJ-captcha 的验证码组件
在 Verify 组件上面,captcha-type 表示验证码类型:blockPuzzle 是滑块,clickWord 是文字点选,这个类型要和 springboot 项目 yml 里面的配置保持一致。
点击登录按钮,弹框显示验证码:
如果验证码校验通过,然后调用成功的方法,继续登录逻辑
// 验证码校验通过
const successVerify = (param) => {
ElMessage.success("图片验证码校验通过");
// 发起登录请求
};
4. 案例演示
5.完整代码
https://gitee.com/zhifou-tech/springboot-vue3-captcha/
我把 vue3 的 demo 放这里了
编程7
java8
前端31
vue31
编程 · 目录
#编程
上一篇Git系列教程,从小白到大神!下一篇Vue3实现前端打印功能,10分钟拿下!
相关推荐
- 手机最强Python编程神器,在手机上运行Python
-
手机编程软件有很多,大部分都很难使用,操作不灵活,甚至不能安装第三方库。...
- centos7上安装python3
-
centos7上默认安装的是python2,要使用python3则需要自行下载源码编译安装。1.安装依赖...
- python详细安装教程
-
本章开始,我们将详细介绍Python编程环境的搭建,工欲善其事必先利其器,所以我们这里先介绍python详细安装教程。由于Python是跨平台的,他可以运行在Windows、Linux、Mac等系统上...
- 再见!Python 3.6
-
到上月为止,Python3.6对我来说已经死掉了。...
- 手把手教你使用Python网络爬虫下载一本小说(附源码)
-
大家好,我是Python进阶者。前言前几天【磐奚鸟】大佬在群里分享了一个抓取小说的代码,感觉还是蛮不错的,这里分享给大家学习。...
- Windows系统下载安装Python3.9(安装Python3.11同理)
-
本节我们将向大家介绍如何在Windows系统安装Python3.9开发环境,安装Python3.11下载Python3.11安装包即可,安装流程都是一样的下载安装Python3.9环境...
- 使用python3爬取网页,aria2下载最新电影,Jellyfin播放电影
-
前言:在我搭建好Jellyfin软件后,因为只能播放本地视频,就想能不能播放网络上的电影,可以每天自动下载并更新,这样就不用我手工下载好,再上传到NAS中播放。或许有更好的方法,那就是直接用电影播放源...
- Python第一课:下载与安装
-
Python自学靠不靠谱?容易上手么?掌握周期长么?如果你真的有兴趣学习Python,那么可以告诉你,只要你兴趣还在,那么你的Python就会了一半,没错,Python就是如此简单,废话不多说,下面跟...
- CentOS 7下安装Python 3.10的完整过程
-
1.安装相应的编译工具yum-ygroupinstall"Developmenttools"yum-yinstallzlib-develbzip2-develope...
- Ubuntu 25.04发行版登场:Linux 6.14内核,带来多项技术革新
-
IT之家4月18日消息,科技媒体linuxiac昨日(4月17日)发布博文,报道称代号为PluckyPuffin的Ubuntu25.04发行版正式上线,搭载最新Linu...
- 解放双手!Python 自动化下载邮件附件,可自定义时间段
-
在日常工作中,我们经常需要从邮箱里下载特定日期范围内的邮件附件。想象一下,你需要收集过去几个月内客户发送的报价单、合同等附件,如果手动一个个去查找和下载,那得花费多少时间和精力呀!今天就给大家分享一个...
- Python爬取下载m3u8加密视频,原来这么简单
-
1.前言爬取视频的时候发现,现在的视频都是经过加密(m3u8),不再是mp4或者avi链接直接在网页显示,都是经过加密形成ts文件分段进行播放。...
- Python3 网络爬虫:漫画下载,动态加载、反爬虫这都不叫事
-
一、前言作者:JackCui经过上两篇文章的学习,Python爬虫三步走:发起请求、解析数据、保存数据,已经掌握,算入门爬虫了吗?不,还远远不够!只掌握这些,还只能算门外汉级别。今天,就来带大家继续...
- win7装DeepseeK的方法
-
DeepSeek是一个基于Python的工具或库,因此能否在Windows7上运行取决于以下因素:---###1.**Python版本支持**-DeepSeek需要Python...
- Linux环境中利用curl和wget命令下载文件的使用技巧
-
简介:Linux里常常用来下载文件的命令有curl命令和wget命令。wget命令一般是从特定的URL下载文件。wget有个优点,就是比较稳当,特别适合网络带宽窄或者网络不太稳定的情...
- 一周热门
- 最近发表
- 标签列表
-
- mydisktest_v298 (34)
- document.appendchild (35)
- 头像打包下载 (61)
- acmecadconverter_8.52绿色版 (39)
- word文档批量处理大师破解版 (36)
- server2016安装密钥 (33)
- mysql 昨天的日期 (37)
- parsevideo (33)
- 个人网站源码 (37)
- centos7.4下载 (33)
- mysql 查询今天的数据 (34)
- intouch2014r2sp1永久授权 (36)
- 先锋影音源资2019 (35)
- jdk1.8.0_191下载 (33)
- axure9注册码 (33)
- pts/1 (33)
- spire.pdf 破解版 (35)
- shiro jwt (35)
- sklearn中文手册pdf (35)
- itextsharp使用手册 (33)
- 凯立德2012夏季版懒人包 (34)
- 冒险岛代码查询器 (34)
- 128*128png图片 (34)
- jdk1.8.0_131下载 (34)
- dos 删除目录下所有子目录及文件 (36)