springboot添加验证码功能

2023-11-11

开源验证码

1、Happy-Captcha

提供了图片和动画两种展现形式,验证码内容包括中文,数字(09),中文数字(零至九),中文大写数字(零至玖),数字与字母混合(09-az-AZ),数字与小写字母混合(09-az),数字与大写字母混合(09-AZ),纯小写字母,纯大写字母,大小写字母混合以及运算表达式(阿拉伯数字运算表达式和中文运算表达式)等12种类型。在默认情况下,HappyCaptcha生成的验证码以图片形式展现,内容为09-az-A~Z的字符随机组合,字符长度为5,图片宽度为160,高度为50,字体为微软雅黑

1.1 引入依赖

<dependency>
  <groupId>com.ramostear</groupId>
  <artifactId>Happy-Captcha</artifactId>
  <version>1.0.1</version>
</dependency>

1.2 配置控制层

@Controller
public class HappyCaptchaController{
    @GetMapping("/captcha")
    public void happyCaptcha(HttpServletRequest request,HttpServletResponse response){
        //1、默认选择静态图片
        //HappyCaptcha.require(request,response).build().finish();
        //2、默认选择动态图片
        HappyCaptcha.require(request,response)
                .style(CaptchaStyle.ANIM)
                .build().finish();
        //3、自定义样式
//        HappyCaptcha.require(request,response)
//                .style(CaptchaStyle.ANIM)			//设置展现样式为动画
//                .type(CaptchaType.CHINESE)			//设置验证码内容为汉字
//                .length(6)							//设置字符长度为6
//                .width(220)							//设置动画宽度为220
//                .height(80)							//设置动画高度为80
//                .font(Fonts.getInstance().zhFont())	//设置汉字的字体
//                .build().finish();
    }
}

验证码类型更改

说明
DEFAULT 数字、大小写字母随机组合
ARITHMETIC 加、减、乘算数运算表达式
ARITHMETIC_ZH 中文简体加、减、乘算数运算表达式描述
CHINESE 常见汉字(3500个)随机组合
NUMBER 0~9数字随机组合
NUMBER_ZH_CN 中文数字(零至九)随机组合
NUMBER_ZH_HK 中文繁体数字(零至玖)随机组合
WORD 大小写字母随机组合
WORD_LOWER 小写字母随机组合
WORD_UPPER 大写字母随机组合
WORD_NUMBER_LOWER 数字、小写字母随机组合
WORD_NUMBER_UPPER 数字、大写字母随机组合

1.3 验证密码

    @PostMapping("/verify")
    @ResponseBody
    //code是前端验证码的name名
    public String verify(String code,HttpServletRequest request){
        //Verification Captcha
        boolean flag = HappyCaptcha.verification(request,code,true);
        //清除session信息(生成的验证码)
        HappyCaptcha.remove(request);
        if(flag){
            System.out.println("yes");
            return "yes";
        }
        return "no";
    }

1.4 前端  (获取后端的数据)

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>验证码</title>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
</head>
<body>
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-/mhDoLbDldZc3qpsJHpLogda//BVZbgYuw6kof4u2FrCedxOtgRZDTHgHUhOCVim" crossorigin="anonymous"></script>
<--验证码+提交验证-->
  <div>
    <form action="/verify" method="post">
      <div>
        <input type="text" name="code" placeholder="请输入验证码" maxlength="6">
      </div>
      <div>
        <img src="/captcha" alt="验证码">
      </div>
      <div>
        <button class="btn btn-primary" type="submit">提交</button>
      </div>
    </form>
  </div>
</body>
</html>

2、Tianai-captcha

2.1 引入依赖

		<dependency>
			<groupId>cloud.tianai.captcha</groupId>
			<artifactId>tianai-captcha-springboot-starter</artifactId>
			<version>1.4.1</version>
		</dependency>

 2.2 配置全局设置

captcha:
  # 如果项目中使用到了redis,滑块验证码会自动把验证码数据存到redis中, 这里配置redis的key的前缀,默认是captcha:slider
  prefix: captcha
  # 验证码过期时间,默认是2分钟,单位毫秒, 可以根据自身业务进行调整
  expire:
    # 默认缓存时间 2分钟(毫秒)
    default: 10000
    # 针对 点选验证码 过期时间设置为 2分钟, 因为点选验证码验证比较慢,把过期时间调整大一些
    WORD_IMAGE_CLICK: 20000
  # 使用加载系统自带的资源, 默认是 false
  init-default-resource: false
  cache:
    # 缓存控制, 默认为false不开启
    enabled: true
    # 验证码会提前缓存一些生成好的验证数据, 默认是20
    cacheSize: 20
    # 缓存拉取失败后等待时间 默认是 5秒钟
    wait-time: 5000
    # 缓存检查间隔 默认是2秒钟
    period: 2000
  secondary:
    # 二次验证, 默认false 不开启
    enabled: false
    # 二次验证过期时间, 默认 2分钟
    expire: 120000
    # 二次验证缓存key前缀,默认是 captcha:secondary
    keyPrefix: "captcha:secondary"

3.3 导入文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot添加验证码功能 的相关文章

随机推荐

  • MATLAB 检验数据正态分布及代码实现

    上篇简要介绍了正态分布检测的必要性和主要分析方法 此篇主要介绍如何通过MATLAB判断分析数据正态特性 1 主要方法 MATLAB检测数据正态特性主要通过数值测定和图形分析 其中数值测定指通过JB等假设检验方法进行测定分析数据 图形分析方法
  • 如何根据数组创建二叉树和打印二叉树?

    By Long Luo 之前的 如何根据数组或者字符串创建链表 http www longluo me blog 2020 12 10 Construct A LinkedList From An Array Or String 详述了 L
  • JS_一维数组转对象

    如果您想将一个一维数组转换为一个对象 可以使用 JavaScript 中的 Object fromEntries 方法 该方法接收一个键值对数组作为参数 并返回一个对象 其中每个键值对对应一个对象属性 const arr name John
  • 超详细手把手教你部署全分布模式Hadoop集群

    1 Hadoop 集群部署规划 全分布模式下部署 Hadoop 集群时 最低需要两台机器 一个主节点和一个从节点 本书拟将 Hadoop 集群运行在 Linux 上 将使用三台安装有 Linux 操作系统的机器 主机名分别为 hadoop
  • The JAVA_HOME environment variable is not defined correctly This environment variable is needed to r

    win10配置MAVEN HOME报错 cmd 中输入mvn v 会报错 The JAVA HOME environment variable is not defined correctly This environment variab
  • CGAL 使用PCA计算点云法向量

    目录 一 算法原理 1 主要函数 二 代码实现 一 算法原理 见 PCL 计算点云法向量并显示 1 主要函数 头文件 include
  • 在CentOS7上面搭建GitLab服务器

    首先要在CentOS系统上面安装所需的依赖 ssh 防火墙 postfix 用于邮件通知 wegt 以下这些命令也会打开系统防火墙中的HTTP和SSH端口访问 1 安装SSH协议 安装命令 sudo yum install y curl p
  • Git 通过change push代码时,失败 提示没有找到change-id

    提示错误如下 没有找到change id 导致不能push成功 那么如何解决该问题呢 解决方案如下 首先通过git reset mixed 71d4 版本号 回退commit 操作 问题来了 版本号如何获取呢 如下操作 在idea 上的gi
  • ubantu22安装配置VS Code(图文教程)

    平台 uabntu22 文件版本 code 1 74 2 1671533413 amd64 deb VSCode下载链接 Download Visual Studio Code Mac Linux Windowshttps code vis
  • android项目开发难点_APP应用开发中的三大难点

    虽然许多开发人员将移动应用程序作为业余爱好 但企业将移动应用程序视为其品牌战略的绝对重要方面 谁可以责怪公司利用移动性和营销趋势 但是 这给移动应用程序开发人员和测试人员带来了很大的压力 问题是移动应用程序开发并不容易 它需要相同的时间 精
  • MFC 播放视频 FFMPEG SDL

    使用MFC播放RTSP视频流 采用vlc的sdk有延时 使用FFMPEG SDL机制会好很多 本文总结了网络上的 只需四行代码即可简单实现SDL嵌入MFC播放视频和图片 和 100行代码实现最简单的基于FFMPEG SDL的视频播放器 先向
  • STM32 工作流程

    工作流程 上电后 芯片复位启动 MCU通过指令 数据总线从FLASH中读取指令或数据 配合解析执行 然后再通过RAM和通用寄存器 R0 R12的内部寄存器 处理可变数据 根据执行的指令 配置和操作外设的寄存器 从而驱动对应的外设实现具体的功
  • vue3.2从0-1封装一个组件库 ( 组件项目的创建 - 发布npm - 使用组件库 )

    目录 vue3 2从0 1封装一个组件库 1 组件的项目初建 1 1创建项目 1 2 packages button index js 1 3 packages button index vue 1 4 packages index js
  • 最详细的——C#对MySQL数据库数据的增删改查

    提示 建议将所有关于处理数据库数据的方法都封装在一个类里面 之后要相应的操作直接调用就可以了 文章目录 前言 一 创建yyl mysql类 自定义类名 二 主窗体样式 三 增 1 添加窗体 2 添加按钮绑定事件 3 运行效果 四 删 1 删
  • CSS自适应

    CSS一列的自适应
  • Fuch混沌映射

    一 Fuch混沌映射 Fuch混沌映射公式如下 该映射具有对初值不敏感 遍历均衡和收敛较快等优点 且在初值不为0的情形下均能产生混沌 二 Fuch混沌映射代码 x 1 rand for i 2 2000 x i cos 1 x i 1 2
  • Java实现符号函数功能

    Java实现符号函数功能 符号函数 Sign Function 又称为符号判断函数 是一种常见的数学函数 用于判断一个数的正负性 如果输入的数大于0 则返回1 如果输入的数等于0 则返回0 如果输入的数小于0 则返回 1 在Java中 我们
  • 大数据~几个入选的技术框架对比

    技术 特点 使用场景 对比 备注 Maxwell 轻量级数据同步中间件 支持刷全量 断点还原 随机读数据 固定JSON数据格式 mysql数据全量 增量同步 Canal 数据落地需要定制开发 不支持刷全量 虽然高版本有了adapter客户端
  • 华为swot分析2020_2020年全球与中国人工智能与分析系统行业现状及未来5年市场预测分析报告...

    本文研究全球及中国市场人工智能与分析系统现状及未来发展趋势 侧重分析全球及中国市场的主要企业 同时对比北美 欧洲 日本 中国 东南亚 印度等地区的现状及未来发展趋势 2019年全球人工智能与分析系统市场规模达到了xx亿元 预计2026年将达
  • springboot添加验证码功能

    开源验证码 1 Happy Captcha 提供了图片和动画两种展现形式 验证码内容包括中文 数字 09 中文数字 零至九 中文大写数字 零至玖 数字与字母混合 09 az AZ 数字与小写字母混合 09 az 数字与大写字母混合 09 A