jcaptcha验证码

现在很多系统和网站使用场景都使用验证码来增强系统安全性。

下面介绍jcaptcha来产生验证码和验证 http://jcaptcha.sourceforge.net/

下面的程序代码参考和仿照了springside3的实现

1.在web.xml上增加验证码的过滤器

创建验证码图形的Filter

<filter-mapping>

<filter-name>jcaptchaFilter</filter-name>

<url-pattern>/jcaptcha.jpg</url-pattern>

</filter-mapping>

验证的Filter

<filter-mapping>

<filter-name>jcaptchaFilter</filter-name>

<url-pattern>/check</url-pattern>

</filter-mapping>

自己写用jcaptcha产生验证码和验证实现的filter

<filter>

<filter-name>jcaptchaFilter</filter-name>

<filter-class>security.jcaptcha.JCaptchaFilter</filter-class>

<init-param><!--失败时的返回页面 -->

<param-name>failureUrl</param-name>

<param-value>/head.vm</param-value>

</init-param>

</filter>

2.获取验证码

在介绍图形码过滤器前,介绍一下jcaptcha产生验证码的api和code

验证码产生和验证需要jcaptcha的com.octo.captcha.service.image.DefaultManageableImageCaptchaService类的服务

产生验证码,并以图片信息输出到客户端

获取验证码的方法: captchaService.getChallengeForID(id)

根据你的id随机产生验证码

代码片段

protected void genernateCaptchaImage(final HttpServletRequest request, final HttpServletResponse response)

throws IOException {

//设置response,输出图片客户端不缓存

response.setDateHeader("Expires", 1L);

response.addHeader("Pragma", "no-cache");

response.setHeader("Cache-Control", "no-cache, no-store, max-age=0");

response.setContentType("image/jpeg");

ServletOutputStream out = response.getOutputStream();

//获取验证码

try {

String captchaId = request.getSession(true).getId();

//用session的id来产生验证码

 BufferedImage challenge = (BufferedImage) captchaService.getChallengeForID(captchaId, request.getLocale());//获取验证码

ImageIO.write(challenge, "jpg", out);

out.flush();

} catch (CaptchaServiceException e) {

System.out.println(e);

} finally {

out.close();

}

}

在显示层,展示验证码<img id="captchaImg" src="显示验证码的过滤器url"/>

3.验证码验证

在介绍图形码过滤器前,介绍一下jcaptcha产生验证码的api和code

验证码产生和验证需要jcaptcha的com.octo.captcha.service.image.DefaultManageableImageCaptchaService类的服务

产生验证码,并以图片信息输出到客户端

获取验证码的方法: captchaService.validateResponseForID(captchaID, 输入的验证码);

返回值true 表示验证通关,false表示验证还没有通过

代码片段

protected boolean validateCaptchaChallenge(final HttpServletRequest request) {

try {

//获取产生验证码的id,用session的id来产生验证码

String captchaID = request.getSession().getId();

//获取输入的验证码

String challengeResponse = request.getParameter(captchaParamterName);

return captchaService.validateResponseForID(captchaID, challengeResponse);

} catch (CaptchaServiceException e) {

System.out.println(e);

return false;

}

}

时间: 2024-10-20 00:18:09

jcaptcha验证码的相关文章

jcaptcha配置验证码

准备开始 首先导入jar包:jcaptcha-my-1.0 /** * web 常量 * @author lx * */ public abstract class Constants { /** 用户 session 的 cookie 名称*/ public static final String SESSION_ID = "JSESSIONID"; } 第一步:创建SessionProvider接口 cn.itcast.common.web.session.SessionProvi

【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(前言)

一直希望能够搭建一个完整的,基础Web框架,方便日后接一些外快的时候,能够省时省力,终于花了一周的时间,把这个东西搞定了.特此写下此博客,一来是纪念,二来是希望能够为别人提供方便.顺带说一下,恩,组合框架的各个部分用的版本有的是最新的,有的则不是,不敢保证最新版本下,按照这个整合方式,不会报错... 简单介绍一下,本框架的基本功能点: Spring:整个框架的主体部分,这个自不用说. SpringMVC:MVC部分我还是比较喜欢Spring的. MyBatis:选型的时候选择这个ORM主要也是考

转:Acegi Security

Acegi Security -- Spring下最优秀的安全系统 http://www.springside.org.cn/docs/reference/Acegi.htm 1. Acegi 介绍 2. Acegi 配置 3. Acegi 扩展 4. Acegi ACL使用 5. FAQ Acegi是Spring Framework 下最成熟的安全系统,它提供了强大灵活的企业级安全服务,如完善的认证和授权机制,Http资源访问控制,Method 调用访问控制,Access Control Li

JCaptcha生成计算式验证码

前两天买了张火车票,令人egg碎的验证已经无力吐槽,试了几次都让我开始怀疑我的IQ是不是适合再从事程序猿的这个"神圣的职业"了.今天分享的是一段比较传统而不失实用的验证,验证的意义想必大家都已知晓. 好了,语言总是苍白无力.直入真题来看代码的实现的吧. 操作环境: jboss eap 6.2 tomcat也可以,比较懒直接用的jboss.大家有兴趣也可以试试,支持的服务更多,性能更加稳定些. servlet 麻雀虽小,五脏俱全,做了小例子足以. JCaptcha jcaptcha是一个

使用jcaptcha插件生成验证码

1.从官网http://jcaptcha.sourceforge.net/下载插件.将对应jar包导入到lib文件夹下 2.创建一个CaptchaServiceSingleton类用来获取jcaptcha自己实现的默认验证码生成器对象DefaultManageableImageCaptchaService(使用单例模式). package com.xhc.jcaptcha; import com.octo.captcha.service.image.DefaultManageableImageC

简单Maven的Web项目之验证码(jcaptcha组件篇)

一:JCaptcha简介 jcaptcha是一个开源的用来生成图形验证码的Java开源组件,使用起来也是非常的简单方便. jcapthca是非常强大的,不光是可以生成图片式的验证码,还可以生成声音式的(新浪就使用了双重验证码). Jcaptcha是CAPTCHA里面的一个比较著名的项目. 二:切换使用JCaptcha生成验证码 1:首先添加需要用到的jar包 注:由于部分jar包maven中央库中没有需要自行添加到本地库,稍后给出jar包的下载地址 下面是jar包在pom.xml文件中的配置 <

jcaptcha sample 制作验证码

Skip to end of metadata Created by marc antoine garrigue, last modified by Jeremy Waters on Feb 23, 2012 Go to start of metadata Description This integration module provides the shortest way to integrate JCaptcha to your web application. This module

JCaptcha做验证码遇到的问题引出的思考

JCaptcha用来做用户登录时期的验证码的,但是今天将开放的应用系统部署到生产环境的时候,遇到了问题,总是提示验证码不对.后台报出来下面的错误: 1 com.octo.captcha.service.CaptchaServiceException: Invalid ID, could not validate unexisting or already validated captcha 2 at com.octo.captcha.service.AbstractCaptchaService.

验证码的制作(二):使用开源组件jcaptcha来实现验证码

使用开源组件jcaptcha来实现验证码 之前说了简单的运用servlet来实现验证码,但其实现的验证码样式比较单一,容易被破解.所以接下来我来介绍另一种实现验证码的方式:那就是运用开源组件jcaptcha来实现样式更全面的验证码样式. 开始之前咱们先来看看运用jcaptcha实现验证码以及对其的验证的一个大致流程:流程图如下 开始之前我们需要下载jcaptcha开源组件jar包 上边就是该项目中需要用到的war包:可以到网上下载,然后将war包解压:这里需要注意的是需要把里面的.class文件