likes
comments
collection
share

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

作者站长头像
站长
· 阅读数 43

1. 认识 AJ-Captcha

AJ-Captcha 是一个开源的行为验证码工具库,包含滑动拼图、文字点选两种方式

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!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 的配置路径。

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

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

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

找到 view/vue3/src/components 目录,拷贝 verifition 文件夹到自己的项目中

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

3.3 配置 AJ-captcha 的 axios

这里我是调用自己封装的 axios

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

3.4 配置 vue3 项目请求后台的接口路径

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

3.5 新建登录页面,添加验证码组件

这里我直接在 App.vue 页面新增一个简单的登录模块,然后导入 AJ-captcha 的验证码组件

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

在 Verify 组件上面,captcha-type 表示验证码类型:blockPuzzle 是滑块,clickWord 是文字点选,这个类型要和 springboot 项目 yml 里面的配置保持一致。

点击登录按钮,弹框显示验证码:

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

如果验证码校验通过,然后调用成功的方法,继续登录逻辑

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

// 验证码校验通过
const successVerify = (param) => {
  ElMessage.success("图片验证码校验通过");
  // 发起登录请求
};

4. 案例演示

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

5.完整代码

https://gitee.com/zhifou-tech/springboot-vue3-captcha/

我把 vue3 的 demo 放这里了

公司项目配置了 AJ-Captcha验证码,竟然提升用户100%验证率!AJ-Captcha 是一个开源的行为验证码工具

转载自:https://juejin.cn/post/7399935751481442342
评论
请登录