work_04_谷歌验证码工具Kaptcha
Posted asndxj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了work_04_谷歌验证码工具Kaptcha相关的知识,希望对你有一定的参考价值。
1.Kaptcha 简介
Kaptcha 是一个可高度配置的实用验证码生成工具,可自由配置的选项如:
- 验证码的字体
- 验证码字体的大小
- 验证码字体的字体颜色
- 验证码内容的范围(数字,字母,中文汉字!)
- 验证码图片的大小,边框,边框粗细,边框颜色
- 验证码的干扰线
- 验证码的样式(鱼眼样式、3D、普通模糊、...)
maven工程,在pom文件中加入依赖包。(本案例基于ssm)
<!-- 验证码类 kaptcha -->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
web.xml
<!--谷歌的验证码生成工具-->
<servlet>
<servlet-name>kaptcha</servlet-name>
<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>kaptcha</servlet-name>
<!--页面上需要使用验证码的地址 就是 url-pattern-->
<url-pattern>/static/images/kaptcha.jpg</url-pattern>
</servlet-mapping>
<!-- 验证码在session中存放时间-->
<session-config>
<session-timeout>20</session-timeout>
</session-config>
2.使用方法
<div>
<input type="text" id="captcha" name="captcha"/>
<img alt="验证码" src="${ctx}/static/images/kaptcha.jpg" title="点击更换" id="img_captcha" onclick="javascript:refreshCaptcha();"
style="height:45px;width:85px;float:right;margin-right:98px;"/>
</div>
配置验证码的样式,主要的样式可以通过init-param的装载属性,然后在页面上的img标签上面即可直接使用src
<init-param>
<param-name>border</param-name>
<param-value>yes</param-value>
</init-param>
kaptcha.border | 图片边框,合法值:yes , no | yes |
kaptcha.border.color | 边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue. | black |
kaptcha.image.width | 图片宽 | 200 |
kaptcha.image.height | 图片高 | 50 |
kaptcha.producer.impl | 图片实现类 | com.google.code.kaptcha.impl.DefaultKaptcha |
kaptcha.textproducer.impl | 文本实现类 | com.google.code.kaptcha.text.impl.DefaultTextCreator |
kaptcha.textproducer.char.string | 文本集合,验证码值从此集合中获取 | abcde2345678gfynmnpwx |
kaptcha.textproducer.char.length | 验证码长度 | 5 |
kaptcha.textproducer.font.names | 字体 | Arial, Courier |
kaptcha.textproducer.font.size | 字体大小 | 40px. |
kaptcha.textproducer.font.color | 字体颜色,合法值: r,g,b 或者 white,black,blue. | black |
kaptcha.textproducer.char.space | 文字间隔 | 2 |
kaptcha.noise.impl | 干扰实现类 | com.google.code.kaptcha.impl.DefaultNoise |
kaptcha.noise.color | 干扰 颜色,合法值: r,g,b 或者 white,black,blue. | black |
kaptcha.obscurificator.impl |
图片样式:<br />水纹 com.google.code.kaptcha.impl.WaterRipple <br /> 鱼眼 com.google.code.kaptcha.impl.FishEyeGimpy <br /> 阴影 com.google.code.kaptcha.impl.ShadowGimpy |
com.google.code.kaptcha.impl.WaterRipple |
kaptcha.background.impl | 背景实现类 | com.google.code.kaptcha.impl.DefaultBackground |
kaptcha.background.clear.from | 背景颜色渐变,开始颜色 | light grey |
kaptcha.background.clear.to | 背景颜色渐变, 结束颜色 | white |
kaptcha.word.impl | 文字渲染器 | com.google.code.kaptcha.text.impl.DefaultWordRenderer |
kaptcha.session.key | session key | KAPTCHA_SESSION_KEY |
kaptcha.session.date | session date | KAPTCHA_SESSION_DATE |
3.session验证 验证码
public class VerifyCaptcha {
public static boolean verify(HttpServletRequest request) {
// 从session中取出servlet生成的验证码text值
String expected = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
// 获取用户页面输入的验证码
String received = request.getParameter("kaptcha");
return received != null && received.equalsIgnoreCase(expected);
}
}
kaptcha已经帮我们把验证码的值写入了session中,我们可以通过,获取页面穿过来的参数,自定义判断是否正确。其session的名称是Constants.KAPTCHA_SESSION_KEY
以上是关于work_04_谷歌验证码工具Kaptcha的主要内容,如果未能解决你的问题,请参考以下文章