当前位置: 首页 > news >正文

spring boot整合kaptcha验证码

引入依赖

<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version>
</dependency>

创建验证码生成配置类 KaptchaConfig.java

@Configuration
public class KaptchaConfig {@Beanpublic DefaultKaptcha kaptcha() {DefaultKaptcha kaptcha = new DefaultKaptcha();Properties properties = new Properties();// 配置验证码生成属性properties.setProperty("kaptcha.border", "no");properties.setProperty("kaptcha.textproducer.font.color", "black");// 更多配置属性...Config config = new Config(properties);kaptcha.setConfig(config);return kaptcha;}
}

创建验证码接口 CaptchaController.java

@Autowiredprivate DefaultKaptcha kaptcha;@GetMapping("/captcha")public ResponseEntity<byte[]> generateCaptcha(HttpServletRequest request) {// 生成验证码String text = kaptcha.createText();BufferedImage image = kaptcha.createImage(text);try {ByteArrayOutputStream baos = new ByteArrayOutputStream();ImageIO.write(image, "jpg", baos);baos.flush();HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.IMAGE_JPEG);// 将验证码存储到会话中,以便后续校验HttpSession session = request.getSession();session.setAttribute("captcha", text);return new ResponseEntity<>(baos.toByteArray(), headers, HttpStatus.OK);} catch (IOException e) {return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);}}

前端

<template><div><img :src="captchaUrl" alt="captcha"><input v-model="inputCaptcha" placeholder="请输入验证码"><button @click="verifyCaptcha">提交</button></div>
</template><script>
import axios from 'axios';export default {data() {return {captchaUrl: '',    // 验证码图片地址inputCaptcha: '',  // 用户输入的验证码captchaId: ''      // 验证码唯一标识符};},mounted() {this.generateCaptcha();  // 页面加载时生成验证码},methods: {generateCaptcha() {axios.get('/captcha').then(response => {this.captchaUrl = 'data:image/jpeg;base64,' + response.data.image;this.captchaId = response.data.captchaId;}).catch(error => {console.error(error);});},verifyCaptcha() {axios.post('/captcha/verify', {captchaId: this.captchaId,captcha: this.inputCaptcha}).then(response => {console.log('验证码校验成功');// TODO: 验证码校验成功后的处理}).catch(error => {console.error('验证码校验失败');// TODO: 验证码校验失败后的处理});}}
};
</script>

注:

校验验证码的方法写在登录请求token中会更好。

http://www.lryc.cn/news/98712.html

相关文章:

  • 【Linux下6818开发板(ARM)】在液晶屏上显示RGB颜色和BMP图片
  • React的hooks---useLayoutEffect
  • 北京创业孵化器汇总
  • 电信软件的过去、现在和未来:推动核心网发展的关键力量
  • 2023年全国程序员薪酬排行天梯榜
  • 设计模式-工厂模式
  • HummerRisk V1.3.0 发布
  • SkyWalking链路追踪中Trace概念以及Trace与span的关系
  • 美容店预约小程序制作教程详解
  • 什么是内存泄漏及如何防护内存泄漏
  • 【libuv】httpserver启用ssl 及 播放的日志打印
  • 13、ffmpeg使用nvidia显卡对OAK深度相机进行解码和编码
  • 自动化测试如何做?搭建接口自动化框架从0到1实战(超细)
  • 安装Python之后 安装库报错 There was an error checking the latest version of pip.
  • "科技与狠活"企业级无代码开发MES系统,一周实现数字化
  • 超实用的品牌软文推广方案分享,纯干货
  • 网络安全(黑客)8大工具
  • 重启Linux服务器 Oracle 数据库步骤
  • kaggle新赛:Bengali.AI 语音识别大赛赛题解析
  • 解放Linux内存:释放缓存(linux释放缓存)
  • 前端跨域解决方案
  • 脚手架(vue-cli)的安装详细教程
  • yolov5 onnx模型 转为 rknn模型
  • Mybatis-Flex
  • C++ | 红黑树以及map与set的封装
  • 逻辑斯特回归
  • OpenCV 算法解析
  • springboot创建并配置环境(一) - 创建环境
  • 2023JAVA 架构师面试 130 题含答案:JVM+spring+ 分布式 + 并发编程》...
  • layui手机端上传文件时返回404 Not Found的解决方案(client_body_temp权限设置)