百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

公司项目配置了 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有个优点,就是比较稳当,特别适合网络带宽窄或者网络不太稳定的情...