springboot整合kaptcha生成验证码功能
作者:Mitsuha三葉 时间:2023-07-14 21:48:51
介绍:kaptcha 是谷歌开源的非常实用的验证码生成工具
一、导入jar包
<!-- kaptcha验证码 -->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
二、编写kaptcha配置类
package com.zym.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 defaultKaptcha(){
DefaultKaptcha kaptcha = new DefaultKaptcha();
Properties properties = new Properties();
//边框
properties.setProperty("kaptcha.border", "no");
//字体颜色
properties.setProperty("kaptcha.textproducer.font.color", "green");
//图片宽度
properties.setProperty("kaptcha.image.width", "120");
//图片高度
properties.setProperty("kaptcha.image.height", "30");
//字体大小
properties.setProperty("kaptcha.textproducer.font.size", "20");
//session key
properties.setProperty("kaptcha.session.key", "kaptcha");
//验证码长度
properties.setProperty("kaptcha.textproducer.char.length", "4");
//字体
properties.setProperty("kaptcha.textproducer.font.names", "宋体");
//文字间隔
properties.setProperty("kaptcha.textproducer.char.space", "10");
//噪点实现类
properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
//图片样式-阴影
properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.ShadowGimpy");
Config config = new Config(properties);
kaptcha.setConfig(config);
return kaptcha;
}
}
三、编写接口
package com.zym.controller;
import com.google.code.kaptcha.impl.DefaultKaptcha;
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.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.image.BufferedImage;
import java.io.IOException;
@RestController
public class KaptchaController {
@Autowired
private DefaultKaptcha defaultKaptcha;
@GetMapping("/kaptcha")
public void getKaptcha(HttpServletRequest request, HttpServletResponse response) throws IOException {
//设置响应头
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setContentType("image/jpeg");
String text = defaultKaptcha.createText();
HttpSession session = request.getSession();
//将验证码存入session
session.setAttribute("code", text);
//创建验证码图片
BufferedImage image = defaultKaptcha.createImage(text);
ServletOutputStream os = response.getOutputStream();
ImageIO.write(image, "jpg", os);
IOUtils.closeQuietly(os);
}
}
四、测试接口
使用PostMan:
输入url:localhost:8080/kaptcha
成功得到验证码图片,大功告成!
来源:https://blog.csdn.net/qq_42804736/article/details/109200622
标签:springboot,kaptcha,验证码
0
投稿
猜你喜欢
spring hibernate实现动态替换表名(分表)的方法
2022-06-10 14:20:03
Android的Launcher启动器中添加快捷方式及小部件实例
2022-10-26 13:05:14
Compose开发之动画艺术探索及实现示例
2023-09-13 04:16:16
java 制作验证码并进行验证实例详解
2023-03-18 11:27:56
Java操作Excel的示例详解
2021-07-08 00:56:56
Android实现可折叠式标题栏
2022-11-05 14:55:05
Android中双击返回键退出应用实例代码
2022-02-20 00:28:44
Java利用钉钉机器人实现发送群消息
2021-06-28 23:37:33
java中的常用集合类整理
2022-08-22 10:35:49
Java 超详细讲解数据结构中的堆的应用
2021-08-19 08:10:53
C#实现软件监控外部程序运行状态的方法
2023-12-04 20:46:15
springboot实现多模块项目添加一新模块
2021-09-22 16:43:09
Android界面设计(APP设计趋势 左侧隐藏菜单右边显示content)
2023-05-20 04:54:24
详解Java的MyBatis框架和Spring框架的整合运用
2022-09-19 19:22:20
java入门概念个人理解之package与import浅析
2021-07-09 10:18:55
C#中倒序输出字符串的方法示例
2023-10-27 21:45:13
一文彻底搞懂Kotlin中的协程
2021-09-19 19:16:01
深入了解C#多线程安全
2023-08-08 19:43:32
C#判断字符是否为汉字的三种方法分享
2022-05-24 07:59:41
Android Activity跳转动画效果
2023-11-25 02:34:51