谷歌验证码kaptcha使用(包括前端获取获取解析)

news/2024/11/29 11:52:11/

1.后端

基于springboot开发。

包结构 

1.导入依赖

<!--kaptcha验证码生成器--><dependency><groupId>com.github.axet</groupId><artifactId>kaptcha</artifactId><version>0.0.9</version></dependency>

2.配置类

@Configuration
public class CaptchaConfig {@Beanpublic DefaultKaptcha defaultKaptcha(){// 验证码生成器DefaultKaptcha captcha = new DefaultKaptcha();// 配置Properties properties = new Properties();//是否有边框properties.setProperty("kaptcha.border", "yes");//设置边框颜色properties.setProperty("kaptcha.border.color", "105,179,90");//边框粗细度,默认为1// properties.setProperty("kaptcha.border.thickness","1");//验证码properties.setProperty("kaptcha.session.key","code");//验证码文本字符颜色 默认为黑色properties.setProperty("kaptcha.textproducer.font.color", "blue");//设置字体样式properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");//字体大小,默认40properties.setProperty("kaptcha.textproducer.font.size", "30");//验证码文本字符内容范围 默认为abced2345678gfynmnpwx// properties.setProperty("kaptcha.textproducer.char.string", "");//字符长度,默认为5properties.setProperty("kaptcha.textproducer.char.length", "4");//字符间距 默认为2properties.setProperty("kaptcha.textproducer.char.space", "4");//验证码图片宽度 默认为200properties.setProperty("kaptcha.image.width", "100");//验证码图片高度 默认为40properties.setProperty("kaptcha.image.height", "40");Config config = new Config(properties);captcha.setConfig(config);return captcha;}
}

3.controller

@RestController
public class CaptchaController {@Autowiredprivate DefaultKaptcha defaultKaptcha;@GetMapping(value = "/captcha",produces = "image/jpeg")public void getCaptcha(HttpServletRequest request, HttpServletResponse response){// 定义response输出类型为image/jpeg类型response.setDateHeader("Expires", 0);// Set standard HTTP/1.1 no-cache headers.response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");// Set IE extended HTTP/1.1 no-cache headers (use addHeader).response.addHeader("Cache-Control", "post-check=0, pre-check=0");// Set standard HTTP/1.0 no-cache header.response.setHeader("Pragma", "no-cache");// return a jpegresponse.setContentType("image/jpeg");//-------------------生成验证码 begin --------------------------//获取验证码文本内容String text = defaultKaptcha.createText();//将验证码文本内容放入sessionrequest.getSession().setAttribute("captcha",text);// 创建验证码图像BufferedImage image = defaultKaptcha.createImage(text);ServletOutputStream outputStream = null;try {outputStream = response.getOutputStream();//输出流输出图片,格式为jpgImageIO.write(image,"jpg",outputStream);outputStream.flush();} catch (IOException e) {e.printStackTrace();}finally {if (null!=outputStream){try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}}}}

2.前端

基于 vue 和 axios,这里只展示请求部分,如何拿到后端验证码图片的src路径

axios请求api

// 获取验证码
export function getCaptcha(){return request({method:"get",url: "/captcha",responseType:"blob" // 指定响应类型为二进制数据})
}

 根据请求api发起请求拿数据

   import {getCaptcha} from "@/api/login.js"// 获取验证码getCaptcha(){getCaptcha().then((resp)=>{const imgData = resp.data; // 拿到图片的二进制数据const imgSrc = URL.createObjectURL(new Blob([imgData],{type:'image/png'})) // 将二进制转换成url路径this.captcha = imgSrc;   })},


http://www.ppmy.cn/news/769683.html

相关文章

电脑常见问题经验分享

1.电脑c盘满了&#xff0c;不会清理又怕删除系统文件 键盘同时按住winR打开运行框&#xff0c;输入%temp%&#xff0c;全部可以删除&#xff08;系统垃圾&#xff09;&#xff0c;然后再次输入cleanmgr&#xff0c;点击要清理的磁盘即可 2.习惯性把文件放在桌面电脑不到一年就…

Managing Projects with GNU make 学习笔记

1. 简介 makefile定义了一种语言来描述源代码、中间文件及可执行文件之间的关系。如果命令行指定了目标&#xff0c;则更新指定的目标&#xff0c;如果没有&#xff0c;则取第一个目标&#xff0c;也即默认目标。1.1 目标与依赖makefile包含构造程序的一组规则&#xff0c;规则…

Linux 的常用系统及网络命令

&#xff08;转载自http://blog.chinaunix.net/uid-8031155-id-2518955.html&#xff09; Linux下常用命令收集整理 Linux 的常用网络命令 计算机网络的主要优点是能够实现资源和信息的共享&#xff0c;并且用户可以远程访问信息。Linux提供了一组强有力的网络命令来为用户…

ftp命令

ftp命令是标准的文件传输协议的用户接口。ftp是在TCP/IP网络上的计算机之间传输文件的简单有效的方法。它允许用户传输ASCII文件和二进制文件。 在ftp会话过程中&#xff0c;用户可以通过使用ftp客户程序连接到另一台计算机上。从此&#xff0c;用户可以在目录中上下移动、列出…

揭开勒索软件的真面目

一、前言 2013年9月&#xff0c;戴尔公司的SecureWorks威胁应对部门&#xff08;CTU&#xff09;发现了一种名为“CryptoLocker”的勒索软件&#xff0c;它以邮件附件形式分发&#xff0c;感染计算机并加密近百种格式文件&#xff08;包括电子表格、数据库、图片等&#xff09;…

MySQL_01删除主键索引

文章目录 添加主键索引删除主键索引 添加主键索引 alter table 表名 add primary key(字段名)删除主键索引 -- 如果这个主键是自增的&#xff0c;先取消自增长 alter table 表名 modify 字段 int; alter table 表名 drop primary key;

学习笔记6

1. 分布式系统核心问题 参考书籍&#xff1a;《区块链原理、设计与应用》 一致性问题 例子&#xff1a;两个不同的电影院买同一种电影票&#xff0c;如何避免超售&#xff1f;如何保持两个电影院数据一致&#xff1f; 挑战 节点之间的网络通讯是不可靠的&#xff0c;包括任意延…

渗透测试学习 九、 MSsql注入上

MSsql注入漏洞详解 &#xff08;Asp、Aspx站&#xff0c;常见于棋牌网站、考试网站、大学网站、政府网站、游戏网站、OA办公系统&#xff09; 大纲&#xff1a;msSQL数据库调用分析  msSQL注入原理  msSQL注入另类玩法   msSQL数据库介绍及操作 介绍&#xff1a;ms SQL是…