Google Kaptcha验证码的使用
原文:http://www.kailing.pub/article/index/arcid/92.html
Kaptcha是什么?
kaptcha 是谷歌开源的非常实用的验证码生成工具,基于SimpleCaptcha的开源项目。使用Kaptcha 生成验证码十分简单并且参数可以进行自定义。只需添加jar包配置下就可以使用,通过配置,可以自己定义验证码大小、颜色、显示的字符等等。下面就来讲一下如何使用kaptcha生成验证码以及在服务器端取出验证码进行校验。
怎么使用Kaptcha?
1.首先要项目使用Kaptcha肯定要依赖kaptcha的jar,maven项目的话直接加入如下依赖,非maven项目就自己下载jar包吧
<dependency>
<groupId>com.github.axet</groupId>
<artifactId>kaptcha</artifactId>
<version>0.0.9</version>
</dependency>
官方下载链接:https://code.google.com/archive/p/kaptcha/downloads,当然你得翻墙哈
2.配置kaptcha
以项目使用spring为例,配置一个默认的Kaptcha的bean,如下
<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha" scope="singleton">
<property name="config">
<bean class="com.google.code.kaptcha.util.Config">
<constructor-arg>
<props>
<prop key="kaptcha.session.key">kaptcha.code</prop>
<!-- 无边框 -->
<prop key="kaptcha.border">no</prop>
<prop key="kaptcha.textproducer.font.color">black</prop>
<!-- 渲染效果:水纹:WaterRipple;鱼眼:FishEyeGimpy;阴影:ShadowGimpy -->
<prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.WaterRipple</prop>
<!-- 不要噪点 -->
<prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.NoNoise</prop>
<prop key="kaptcha.image.width">90</prop>
<prop key="kaptcha.image.height">33</prop>
<prop key="kaptcha.textproducer.font.size">25</prop>
<prop key="kaptcha.textproducer.char.length">4</prop>
<prop key="kaptcha.textproducer.char.space">5</prop>
<!-- 和登录框背景颜色一致 -->
<prop key="kaptcha.background.clear.from">247,247,247</prop>
<prop key="kaptcha.background.clear.to">247,247,247</prop>
</props>
</constructor-arg>
</bean>
</property>
</bean>
3.将生成的验证码保存进session中,并输出由验证码生成的图片流到页面
@Autowired
private Producer captchaProducer;
@RequestMapping(value = "/kaptchaImage", method = RequestMethod.GET)
public void kaptcha(HttpServletRequest req, HttpServletResponse rsp) {
ServletOutputStream out = null;
try {
HttpSession session = req.getSession();
rsp.setDateHeader("Expires", 0);
rsp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
rsp.addHeader("Cache-Control", "post-check=0, pre-check=0");
rsp.setHeader("Pragma", "no-cache");
rsp.setContentType("image/jpeg");
String capText = captchaProducer.createText();
session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
BufferedImage image = captchaProducer.createImage(capText);
out = rsp.getOutputStream();
ImageIO.write(image, "jpg", out);
out.flush();
}catch(IOException e)
{
throw new SystemException(e);
} finally {
try {
out.close();
} catch (IOException e) {
throw new SystemException(e);
}
}
}
4.校验用户输入的验证码和保存进session的是否一直,达到验证目的
@RequestMapping(value = "/login", method = RequestMethod.POST, produces = "text/html; charset=utf-8")
public String userLogin(String accountName, String password, String captcha, Boolean rememberMe, HttpServletRequest request) {
//从session中取出kaptcha生成的验证码text值
String expected = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
//获取用户页面输入的验证码
if(!captcha.equalsIgnoreCase(expected))
{
request.setAttribute("error", "验证码错误!");
return "/login";
}else
{
xxxx验证码后的后续逻辑
}
}
更详细的Kaptcha验证码配置?
- kaptcha.border 是否有边框 默认为true 我们可以自己设置yes,no
- kaptcha.border.color 边框颜色 默认为Color.BLACK
- kaptcha.border.thickness 边框粗细度 默认为1
- kaptcha.producer.impl 验证码生成器 默认为DefaultKaptcha
- kaptcha.textproducer.impl 验证码文本生成器 默认为DefaultTextCreator
- kaptcha.textproducer.char.string 验证码文本字符内容范围 默认为abcde2345678gfynmnpwx
- kaptcha.textproducer.char.length 验证码文本字符长度 默认为5
- kaptcha.textproducer.font.names 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
- kaptcha.textproducer.font.size 验证码文本字符大小 默认为40
- kaptcha.textproducer.font.color 验证码文本字符颜色 默认为Color.BLACK
- kaptcha.textproducer.char.space 验证码文本字符间距 默认为2
- kaptcha.noise.impl 验证码噪点生成对象 默认为DefaultNoise
- kaptcha.noise.color 验证码噪点颜色 默认为Color.BLACK
- kaptcha.obscurificator.impl 验证码样式引擎 默认为WaterRipple
- kaptcha.word.impl 验证码文本字符渲染 默认为DefaultWordRenderer
- kaptcha.background.impl 验证码背景生成器 默认为DefaultBackground
- kaptcha.background.clear.from 验证码背景颜色渐进 默认为Color.LIGHT_GRAY
- kaptcha.background.clear.to 验证码背景颜色渐进 默认为Color.WHITE
- kaptcha.image.width 验证码图片宽度 默认为200
- kaptcha.image.height 验证码图片高度 默认为50
效果图如下

Google Kaptcha验证码的使用的更多相关文章
- Spring MVC 中使用 Google kaptcha 验证码
验证码是抵抗批量操作和恶意登录最有效的方式之一. 验证码从产生到现在已经衍生出了很多分支.方式.google kaptcha 是一个非常实用的验证码生成类库. 通过灵活的配置生成各种样式的验证码,并将 ...
- google kaptcha 验证码的使用
这边演示下idea+maven+servlet实现谷歌的kaptcha验证码的使用: web.xml, 这边主要是kaptcha验证器, <!DOCTYPE web-app PUBLIC &qu ...
- google kaptcha 验证码组件使用简介
kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.K ...
- Java实现验证码制作之一Kaptcha验证码
Kaptcha验证码 是google提供的验证码插件,使用起来相对简单,设置的干扰线以及字体扭曲不易让其他人读取破解. 这里我们需要 导入一个 kaptcha-2.3.jar 下载地址:http:/ ...
- kaptcha验证码插件的使用
kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.K ...
- kaptcha 验证码组件使用
kaptcha 验证码组件使用简介 kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.co ...
- KAPTCHA验证码使用步骤
使用kaptcha可以方便的配置: · 验证码的字体 · 验证码字体的大小 · 验证码字体的字体颜色 · 验证码内容的范围(数字,字母,中文汉字!) · 验证码图片的大小,边框,边框粗细,边框颜色 · ...
- kaptcha验证码的使用
使用kaptcha可以方便的配置: 验证码的字体 验证码字体的大小 验证码字体的字体颜色 验证码内容的范围(数字,字母,中文汉字!) 验证码图片的大小,边框,边框粗细,边框颜色 验证码的干扰线(可以自 ...
- jcaptcha和kaptcha验证码使用入门【转】
jcaptcha和kaptcha验证码使用入门 一.jcaptcha验证码使用 jcaptcha使用默认样式生成的验证码比较难以识别,所以需要自定义验证码的样式,包括,背景色.背景大小.字体.字体大小 ...
随机推荐
- 掌握Spark机器学习库-07-回归分析概述
1)回归与分类算法的区别 回归的预测结果是连续的,分类的预测结果是离散的. 2)spark实现的回归算法有: 3)通过相关系数衡量线性关系的程度
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图实体类映射 下一篇:Farseer.net轻量级ORM开源 ...
- Java之抽象和封装
① 如何从现实世界中抽象出类? 根据软件开发需求: 发现类-->发现类的属性-->发现类的方法 ② 构造方法的作用和特点是什么? 作用:在创建对象时执行一些初始化操作 ...
- win7电脑桌面壁纸曝光过高影响图标怎么办?亲测实用解决方法
现在用win7系统的人应该还是挺多的吧,虽然说windows家族已经升级到现在的win11了,相信大多数人家用的电脑系统还是win7吧,今天要讲的是一个壁纸曝光度过高的解决办法,虽然还不清楚为什么,但 ...
- 迅为IMX6UL开发板
迅为iMX6UL开发板采用核心板加底板形式,核心板使用邮票孔方式连接,牢固耐用.处理器ARM®Cortex®-A7内核,运行速度高达528 MHz.512MDDR内存,8G EMMC存储,板截双网口, ...
- hibernate fetch属性
fetch的属性值有:select(默认值).join.subselect 1)当fetch=”select”时,程序会先查询返回要查询的主体对象,然后根据lazy属性看是否懒加载. 2)当fetch ...
- ALTER DATABASE 修改一个数据库
SYNOPSIS ALTER DATABASE name SET parameter { TO | = } { value | DEFAULT } ALTER DATABASE name RESET ...
- Flutter web环境变量搭建及开发
使用flutter开发app已有三个月,有一些行为形成了惯性,在搭建flutter web环境变量时走了不少的坑,分享出来,免得其他小伙伴再走一遍. 首先flutter的版本要使用1.5及以上版本 d ...
- 用node写个简单的静态服务器
直接上代码吧,我把它命名为 app.js, 只要在该文件所在目录下,控制台运行 node app.js 即可启动一个本地服务器了. /** * 服务器 * Author jervy * Date */ ...
- 题解 洛谷P4035/BZOJ1013【[JSOI2008]球形空间产生器】
题目链接在这QvQ "你要求出这个n维球体的球心坐标",这使我想到的解方程...... 先假设n=2,这是一个二维平面.设圆心的坐标为\((x,y)\),有两个坐标\((a_1,b ...