Spring boot如何集成kaptcha并生成验证码

作者:慕尘 时间:2023-09-13 04:00:24 

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.测试

Spring boot如何集成kaptcha并生成验证码

来源:https://www.cnblogs.com/baby123/p/13332064.html

标签:Spring,boot,kaptcha,验证码
0
投稿

猜你喜欢

  • Spring注解@Scope原理及用法解析

    2023-12-06 14:08:17
  • Android EditText长按菜单中分享功能的隐藏方法

    2021-08-27 19:30:45
  • Android动态添加碎片代码实例

    2023-10-19 23:35:13
  • 一篇文章带你搞定JAVA反射

    2023-09-18 02:27:51
  • Android用过TextView实现跑马灯效果的示例

    2023-07-27 11:16:54
  • Android录音时获取分贝值的方法代码实例

    2022-03-03 04:15:12
  • 如何使用Flutter发布安卓应用

    2022-09-07 08:46:07
  • Spring Boot 配置和使用多线程池的实现

    2022-09-04 19:53:02
  • springboot2.x 接入阿里云市场短信发送的实现

    2023-09-20 23:03:57
  • 安卓逆向半次元app逆向分析源码

    2023-07-28 14:36:05
  • Android中实现水平滑动(横向滑动)ListView示例

    2021-09-07 18:15:03
  • Android 实现悬浮窗功能

    2021-09-17 20:02:07
  • c语言实现的几种常用排序算法

    2022-02-23 04:04:11
  • Java8如何从一个Stream中过滤null值

    2022-02-03 08:10:20
  • Android中Activity之间跳转和参数传递的实例

    2023-01-31 21:40:32
  • Spring深入探索AOP切面编程

    2023-05-27 09:37:16
  • Java基础之二叉搜索树的基本操作

    2023-07-08 10:07:07
  • 深入解析JVM对dll文件和对类的装载过程

    2023-06-14 23:23:33
  • C#表达式和运算符详细解析

    2021-09-30 23:39:09
  • 全网最全SpringBoot集成swagger的详细教程

    2021-10-25 16:53:44
  • asp之家 软件编程 m.aspxhome.com