Spring boot如何集成kaptcha并生成验证码
作者:慕尘 发布时间:2023-09-13 04:00:24
标签:Spring,boot,kaptcha,验证码
kaptcha是一个开源的验证码实现库
1.添加依赖
<dependency>
<groupId>com.github.axet</groupId>
<artifactId>kaptcha</artifactId>
<version>0.0.9</version>
</dependency>
2.添加配置类
配置验证码的生成属性
package com.dream.road.config;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
@Configuration
public class KaptchaConfig {
@Bean
public DefaultKaptcha producer() {
Properties properties = new Properties();
// 设置边框
properties.put("kaptcha.border", "yes");
// 设置边框颜色
properties.put("kaptcha.border.color", "105,179,90");
// 设置字体颜色
properties.put("kaptcha.textproducer.font.color", "black");
// 设置图片宽度
properties.put("kaptcha.image.width", "160");
// 设置图片高度
properties.put("kaptcha.image.height", "50");
//设置字体尺寸
properties.put("kaptcha.textproducer.font.size", "30");
// 设置验证码长度
properties.put("kaptcha.textproducer.char.length", "5");
// 设置字体
properties.put("kaptcha.textproducer.font.names", "宋体,楷体,黑体");
Config config = new Config(properties);
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
defaultKaptcha.setConfig(config);
return defaultKaptcha;
}
}
复制代码
参数:
kaptcha.border:图片边框,值:yes , no
kaptcha.border.color:边框颜色,值: r,g,b (and optional alpha) 或者 white,black,blue
kaptcha.image.width:图片宽
kaptcha.image.height:图片高
kaptcha.textproducer.char.length:验证码长度
kaptcha.textproducer.font.names:字体
kaptcha.textproducer.font.size:字体大小
kaptcha.textproducer.font.color:字体颜色
kaptcha.textproducer.char.space:文字间隔
kaptcha.background.clear.from:背景颜色渐变,开始颜色
kaptcha.background.clear.to:背景颜色渐变,结束颜色
3.生成验证码api
package com.dream.road.controller;
import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
@RestController
public class LoginController {
@Autowired
private Producer producer;
@GetMapping("captcha.jpg")
public void captcha(HttpServletResponse response, HttpServletRequest request) throws ServletException, IOException {
response.setHeader("Cache-Control", "no-store, no-cache");
response.setContentType("image/jpeg");
// 生成文字验证码
String text = producer.createText();
// 生成图片验证码
BufferedImage image = producer.createImage(text);
// 保存到验证码到 session
request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, text);
ServletOutputStream out = response.getOutputStream();
ImageIO.write(image, "jpg", out);
IOUtils.closeQuietly(out);
}
}
4.测试
来源:https://www.cnblogs.com/baby123/p/13332064.html


猜你喜欢
- 功能描述上传照片文件名及是系统要识别标签或是照片的名称(人物标识)提取照片脸部特征值(调用 facemesh模型)保存特征值添加样本(调用
- xxljob介绍XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上
- 本文实例为大家分享了Android Camera1实现预览框显示的具体代码,供大家参考,具体内容如下Android要预览Camer界面其实非
- Java停止线程的逻辑(协同、通知)在Java程序中,我们想要停止一个线程可以通过interrupt方法进行停止。但是当我们调用interr
- 线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序
- 前言最近的项目中需要用到VideoView实现视频播放,自己花了一天多时间才能出来,有点想打自己再见,在学校的时候没好好学。使用VideoV
- 在说明映射文件规则之前,先来回顾一下ORM相关概念。1.ORM概念ORM(Object Relationship Mapping)对象关系映
- 本文实例为大家分享了Android百度地图定位、显示用户当前位置的工具类,供大家参考,具体内容如下1、构建定位Option的工具类impor
- 推荐idea2022最新激活教程:idea2021最新激活方法https://www.jb51.net/article/197138.htm
- PreparedStatement介绍可以通过调用 Connection 对象的 prepareStatement(String sql)
- C#byte数组与Image的相互转换实例代码功能需求:1、把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数
- 网上找的一个单页面通讯录,修改之后将添加联系人和修改/删除联系人分为两个独立页面MainActivitypackage com.exampl
- SpringBoot的自动装配是拆箱即用的基础,也是微服务化的前提。这次主要的议题是,来看看它是怎么样实现的,我们透过源代码来把握自动装配的
- .NET具有较多的优点,如:标准集成,简化应用,对移动设备的支持等。但使用.NET编写的程序有个致命的缺点:易被反编译,且运行时占用较大的资
- 前言Spring Boot中在yaml中编写的自定义变量、数组、对象等,在代码中读取该yaml配置文件中内容的三种方式。实现在代码中运用配置
- 背景java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那
- 去年春节的时候支付宝推行的集福娃活动着实火的不能再火了,更给力的是春晚又可以全民参与咻一咻集福娃活动,集齐五福就可平分亿元大红包,只可惜没有
- 1,Java中操作方法:import java.io.*; public class FileInputStreamTest &
- 概述在 Linux 平台下使用搜狗输入法在 IDEA 中输入中文时,输入法候选框总是静止在 IDEA 的左下角,而不能跟随光标进行移动。虽然
- 1. 概述官方JavaDocsApi: java.awt.FlowLayoutFlowLayout,流式布局管理器。按水平方向依次排列放置组