广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Spring Boot 验证码框架 CAPTCHA详解
  • 349
分享到

Spring Boot 验证码框架 CAPTCHA详解

2024-04-02 19:04:59 349人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

CAPTCHA 查看 GitHub 仓库 | 查看 gitee 仓库 简介 人机识别与验证码是后端开发中保护接口最常见的方式之一,而此类代码往往会与业务代码耦合带来项目可维护性变差。

CAPTCHA

查看 GitHub 仓库 | 查看 gitee 仓库

简介

人机识别与验证码是后端开发中保护接口最常见的方式之一,而此类代码往往会与业务代码耦合带来项目可维护性变差。

CAPTCHA 是一个基于 Spring Boot 的验证码框架,它通过 aop 的方式完成包含验证码生成、发送、存储等验证码相关业务,以避免与业务代码耦合。
开发者可以轻松地通过不同组件的组合来完成验证业务,同时可以进行自定义实现以应对自身的业务需求(例如邮箱验证码、短信验证码)。

代码示例

导入 Maven 依赖


<dependency>
 <groupId>cn.dustlight.captcha</groupId>
 <artifactId>captcha-core</artifactId>
 <version>0.0.6</version>
</dependency>

添加注解启用 CAPTCHA


@SpringBootApplication
@EnableCaptcha // 启用 CAPTCHA
public class DemoApplication {
 public static void main(String[] args) {
  springApplication.run(DemoApplication.class, args);
 }
}

使用注解生产验证码


 @RequestMapping("/captcha")
 @SendCode // 生成随机字符图像验证码并发送
 public void captcha(@CodeValue String code) {
  // 在此处进行自定义的业务,验证码的生成、发送与储存已由注解 '@SendCode' 完成。
  log.info(code);
 }

使用注解消费验证码(保护接口)


 @RequestMapping("/")
 @VerifyCode
 public String index(@CodeValue String code) {
  // 在此处进行自定义的业务,验证码的验证以及销毁已由注解 '@VerifyCode' 完成。
  return String.fORMat("Hello World! (%s)", code);
 }

实现原理

CAPTCHA 基于面向切面编程(AOP)思想,将验证码业务划分为两个切面:

@SendCode

  1. 生成验证码
  2. 储存验证码
  3. 发送验证码

@VerifyCode

  • 读取验证码
  • 进行验证

同时将验证码业务抽象为下面几个接口:

  • Code—— 验证码
  • CodeGenerator—— 生成器
  • CodeSender—— 发送器
  • CodeStore—— 储存器
  • CodeVerifier—— 验证器

例子

随机字符图像验证码的 AOP 实现

业务分析

  •  客户端访问验证码接口获取到图像,同时后端服务将生成的验证码储存在 Session 或者 Redis
  • 客户端访问接口(登录、注册等),传入参数以及验证码,后端服务取出验证码进行校验。

模块划分

接口 实现 功能/描述
Code Code<String> 字符串型 Code ,内有验证码名、验证码值。(验证码名用于区分不同业务的验证码)
CodeGenerator RandomStrinGCodeGenerator 随机字符串生成,通过参数配置字符池以及长度。
CodeSender ImageCodeSender 绘制图像(随机字符、干扰线),输出到 Response。
CodeStore httpsessionCodeStore 基于 Session 对验证码进行储存与取出。
CodeVerifier StringEqualsCodeVerifier 字符串比较验证,通过参数配置是否大小写敏感以及是否 trim 。

业务逻辑

@SendCode

  1. 通过 CodeGenerator生成 Code
  2. 通过 CodeStore储存 Code
  3. 通过 CodeSender输出 Code
  4. 执行业务代码。

@VerifyCode

  1. 从请求参数获取待验证的验证码。
  2. 通过 CodeStore取出 Code
  3. 通过 CodeVerify进行验证。
  4. 验证完成则执行业务代码,否则抛出异常。

拓展与组合

除了图像验证码(人机识别)以外,常见的验证码业务或者人机识别业务例如:短信验证码、邮箱验证码、谷歌 reCAPTCHA 人机识别等都可以通过实现上述接口来完成业务。

例如,想要使用 Redis 储存验证码只需要通过 RedisTemplate实现 CodeStore即可,再通过模块的组合使用可以轻易地完成自定义的验证码业务,同时又不影响业务代码。

到此这篇关于Spring Boot 验证码框架 - CAPTCHA的文章就介绍到这了,更多相关Spring Boot 验证码框架内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring Boot 验证码框架 CAPTCHA详解

本文链接: https://www.lsjlt.com/news/122115.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring Boot 验证码框架 CAPTCHA详解
    CAPTCHA 查看 Github 仓库 | 查看 Gitee 仓库 简介 人机识别与验证码是后端开发中保护接口最常见的方式之一,而此类代码往往会与业务代码耦合带来项目可维护性变差。...
    99+
    2022-11-11
  • Spring Boot验证码框架CAPTCHA有什么用
    这篇文章主要介绍Spring Boot验证码框架CAPTCHA有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!CAPTCHA简介人机识别与验证码是后端开发中保护接口最常见的方式之一,而此类代码往往会与业务代码耦...
    99+
    2023-06-14
  • Spring Boot构建框架详解
    什么Spring Boot?Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,...
    99+
    2023-05-30
    spring boot 框架
  • 详解node-ccap模块生成captcha验证码
    准备工作如下: 这个库依赖python2.7.X和node-gyp,请先安装 1、Python 安装完之后将安装目录如“C:Python27”添加至系统环境变量PATH中。 2、node-gyp安装 全局...
    99+
    2022-06-04
    验证码 详解 模块
  • Spring 使用Validation 验证框架的问题详解
    一、介绍 Spring Validation 验证框架对参数的验证机制提供了@Validated (Spring's JSR-303 规范,是标准 JSR-303 的一个变种),ja...
    99+
    2022-11-12
  • Spring Boot实现登录验证码功能的案例详解
    目录验证码的作用案例要求前端页面准备准备login.html页面随机验证码工具类后端控制器验证码的作用 验证码的作用:可以有效防止其他人对某一个特定的注册用户用特定的程序暴力破解方式...
    99+
    2022-11-13
    springboot登录验证码 springboot验证码
  • 详解MyEclipse中搭建spring-boot+mybatis+freemarker框架
    在MyEclipse里创建一个maven项目。File>New>Maven Project:勾选图中红色部分,然后点击Next。填写下图中红色部分然后点击Finish。此时一个maven项目已经生成,目录结构如下:打开pom.x...
    99+
    2023-05-31
    myeclipse springboot mybatis
  • 实例详解Spring Boot实战之Redis缓存登录验证码
    本章简单介绍redis的配置及使用方法,本文示例代码在前面代码的基础上进行修改添加,实现了使用redis进行缓存验证码,以及校验验证码的过程。1、添加依赖库(添加redis库,以及第三方的验证码库) <dependency...
    99+
    2023-05-31
    spring boot redis
  • 干货必看|Spring Boot整合MyBatis框架详解
    在开发中,我们通常会对数据库的数据进行操作,Sprirng Boot对关系型数据库和非关系型数据库的访问操作都提供了非常好的整合支持。所以今天壹哥就给大家讲解一下,如何在SpringBoot环境中整合Mybatis框架,请大家认真看哦。 一...
    99+
    2023-10-25
    mybatis 数据库 java
  • Spring Boot Rest常用框架注解详情简介
    目录开始Spring Boot Rest的先决条件在Spring Initializer创建Spring Boot项目Spring Boot注解@RestController@Req...
    99+
    2022-11-13
  • spring boot Slf4j日志框架的体系结构详解
    目录前言一、五花八门的日志工具包1.1. 日志框架1.2.日志门面1.3日志门面存在的意义二、日志框架选型三、日志级别四、常见术语概念解析总结前言 刚刚接触到java log日志的同...
    99+
    2022-11-13
  • Spring Security短信验证码实现详解
    目录需求实现步骤获取短信验证码短信验证码校验过滤器短信验证码登录认证配置类进行综合组装需求 输入手机号码,点击获取按钮,服务端接受请求发送短信 用户输入验证码点击...
    99+
    2022-11-12
  • js实现验证码输入框示例详解
    目录前言思路遇到的问题HTMLCSSJS前言 验证码输入框应该是很常见的需求吧,不知道各位小伙伴在在遇到的时候是选择找一找插件还是自己动手撸一个呢?我花了点时间撸了一个出来,实际体验...
    99+
    2022-11-13
  • Spring MVC中使用Google kaptcha验证码的方法详解
    前言众所周知验证码是抵抗批量操作和恶意登录最有效的方式之一,我们在每天或许都会遇到,验证码从产生到现在已经衍生出了很多分支、方式。google kaptcha 是一个非常实用的验证码生成类库。通过灵活的配置生成各种样式的验证码,并将生成的验...
    99+
    2023-05-30
    springmvc kaptcha验证码 google
  • Flask框架中密码的加盐哈希加密和验证功能的用法详解
    密码加密简介 密码存储的主要形式: 明文存储:肉眼就可以识别,没有任何安全性。 加密存储:通过一定的变换形式,使得密码原文不易被识别。 密码加密的几类方式: 明文转码加密:BASE64, ...
    99+
    2022-06-04
    详解 框架 加盐
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作