Jeecms验证码-jcaptcha

jcaptcha-all-1.0-RC6.jar 和 解决步骤 包 1.将jeecms自带的jcaptcha-1.0.jar 替换成jcaptcha-all-1.0-RC6.jar 2.修改配置文件WEB-INF/config/captcha-context.xml <bean id="captchaService" class="com.octo.captcha.service.multitype.GenericManageableCaptchaService"> <constructor-arg index="0" ref="imageEngine"/> <constructor-arg type="int" index="1" value="180"/> <constructor-arg type="int" index="2" value="100000"/> <!--注释此处--> <!-- <constructor-arg type="int" index="3" value="75000"/> --> </bean> 立即下载

本文主要介绍jeecms中使用的验证码 jcapthcha.

 

这是个开源的软件,下载地址:

 

http://jcaptcha.sourceforge.net/

 

在jeecms中使用的版本是jcaptcha-1.0.jar.

 

  • web.xml里的配置
Xml代码  收藏代码
  1. <servlet>  
  2.     <servlet-name>Jcaptcha</servlet-name>  
  3.     <servlet-class>com.jeecms.common.captcha.JcaptchaServlet</servlet-class>  
  4. </servlet>  
  5. <servlet-mapping>  
  6.     <servlet-name>Jcaptcha</servlet-name>  
  7.     <url-pattern>/captcha.svl</url-pattern>  
  8. </servlet-mapping>  

 注意,这里的url使用的是/captcha.svl.

 

servlet JcaptchaServlet 重新写了生成图片的代码。

 

  • login.html中的配置
Html代码  收藏代码
  1. <span><<span class="start-tag">form</span>  
  2.   
  3.   
  4.  <span class="attribute-name">id</span>  
  5.   
  6.   
  7. ="<a class="attribute-value">jvForm</a>  
  8.   
  9.   
  10. " <span class="attribute-name">action</span>  
  11.   
  12.   
  13. ="<a class="attribute-value">/login.jspx</a>  
  14.   
  15.   
  16. " <span class="attribute-name">method</span>  
  17.   
  18.   
  19. ="<a class="attribute-value">post</a>  
  20.   
  21.   
  22. "></span>  
  23.   
  24.   
  25. <span>  
  26. ...</span>  
  27.   
  28.   
  29.    
  30. <td colspan="2"><img src="/captcha.svl" onclick="this.src='/captcha.svl?d='+new Date()*1"   
  31. width="100" height="35"/></td>  
  32. ...  
  33. </form>  

    onclick 方法后面是如果点击此图片,则生成新的验证码图片。

 

  • 验证码的处理类CasLoginAct.java

包路径:package com.jeecms.cms.action.member;

 

验证的代码如下:

Java代码  收藏代码
  1. @RequestMapping(value = "/login.jspx", method = RequestMethod.POST)  
  2.     public String submit(String username, String password, String captcha,  
  3.             String processUrl, String returnUrl, String message,  
  4.             HttpServletRequest request, HttpServletResponse response,  
  5.             ModelMap model) {  
  6.         Integer errorRemaining = unifiedUserMng.errorRemaining(username);  
  7.         CmsSite site = CmsUtils.getSite(request);  
  8.         String sol = site.getSolutionPath();  
  9.         WebErrors errors = validateSubmit(username, password, captcha,  
  10.                 errorRemaining, request, response);  
  11.   
  12.   
  13. 。。。。。  
  14.   
  15. private WebErrors validateSubmit(String username, String password,  
  16.             String captcha, Integer errorRemaining, HttpServletRequest request,  
  17.             HttpServletResponse response) {  
  18.         WebErrors errors = WebErrors.create(request);  
  19.         if (errors.ifOutOfLength(username, "username", 1, 100)) {  
  20.             return errors;  
  21.         }  
  22.         if (errors.ifOutOfLength(password, "password", 1, 32)) {  
  23.             return errors;  
  24.         }  
  25.         // 如果输入了验证码,那么必须验证;如果没有输入验证码,则根据当前用户判断是否需要验证码。  
  26.         if (!StringUtils.isBlank(captcha)  
  27.                 || (errorRemaining != null && errorRemaining < 0)) {  
  28.             if (errors.ifBlank(captcha, "captcha", 100)) {  
  29.                 return errors;  
  30.             }  
  31.             try {  
  32.                 if (!imageCaptchaService.validateResponseForID(session  
  33.                         .getSessionId(request, response), captcha)) {  
  34.                     errors.addErrorCode("error.invalidCaptcha");  
  35.                     return errors;  
  36.                 }  
  37.             } catch (CaptchaServiceException e) {  
  38.                 errors.addErrorCode("error.exceptionCaptcha");  
  39.                 log.warn("", e);  
  40.                 return errors;  
  41.             }  
  42.         }  
  43.         return errors;  
  44.     }  
  45. 。。。。  
 

 

 

注意,image的生成和验证,是根据sessionid为标识的。

比如生成时的代码:

Java代码  收藏代码
  1. String captchaId = session.getSessionId(request, response);  
  2.             BufferedImage challenge = captchaService.getImageChallengeForID(  
  3.                     captchaId, request.getLocale());  
  4.             // Jimi.putImage("image/jpeg", challenge, jpegOutputStream);  
  5.             ImageIO.write(challenge, CAPTCHA_IMAGE_FORMAT, jpegOutputStream);  
 

验证时的代码:

Java代码  收藏代码
  1. if (!imageCaptchaService.validateResponseForID(session  
  2.                         .getSessionId(request, response), captcha)) {  
  3.                     errors.addErrorCode("error.invalidCaptcha");  
  4.                     return errors;  

 

jeecms万能验证码 jeecms安装完毕后,找到项目对应的目录,把三个文件进行替换,就可以在注册、登录、留言时免验证码。登录密码错误三次后显示验证码,输入任意数如123就行。注明:jeecms9.2版本已验证通过。 立即下载

相关推荐

jcaptcha相关jar包

包含以下四个包 jcaptcha-api-2.0-alpha-1.jar jcaptcha-2.0-alpha-1-SNAPSHOT.jar jcaptcha-api-1.0.jar jcaptcha-integration-simple-servlet-2.0-alpha-1-SNAPSHOT.jar

通过spring整合jcaptcha来处理验证码

整合了s2sh后,突然想做一个登录的实例,正好要用到一个验证码,顺便就研究下。上网查了下,传统的验证码是通过自己awt包中的BufferedImage类来生成画图对象来自己画图的,生成的验证码保留在session中,通过servlet加载到页面的img标签上。     package com.registration.servlet; import java.awt.Color; i...

shaw_n_lu的专栏 219

jeecms屏蔽前端验证码

在性能测试时,通常前端验证码都要屏蔽或弄个万能验证码,此次屏蔽验证码是在jeecms v9.2源码基础上做处理,内附源码和字节码。

spring security4 之 图片验证码

要实现验证码有多种方式处理,我还是认为覆写原来的用户密码的过滤器最为合理 首先修改一定要删除  替换成 com.aolong.common.security.UsernamePasswordCaptchaAuthenticationFilter 这就是重写的验证拦截器 public class

1792

jcaptcha的相关jar下载

jcaptcha-2.0-alpha-1-SNAPSHOT.jar;jcaptcha-api-1.0.jar;jcaptcha-integration-simple-servlet-2.0-alpha-1-SNAPSHOT.jar,没办法0分,只能1分分享了

Jcaptcha包

jcaptcha 2.0版jar包,你可以从官网直接下载,maven仓库中没有,需要自己install到本地仓库

jeecms 验证码-jcaptcha

本文主要介绍jeecms中使用的验证码 jcapthcha.   这是个开源的软件,下载地址:   http://jcaptcha.sourceforge.net/   在jeecms中使用的版本是jcaptcha-1.0.jar.   web.xml里的配置 &lt;servlet&gt; &lt;servlet-name&gt;Jcaptcha&lt;...

iteye_3398的博客 354

从理论到实践:基于Zemax的高分辨率生物显微镜光学系统仿真与优化指南

本文详细介绍了基于Zemax的高分辨率生物显微镜光学系统仿真与优化全流程。从阿贝分辨率公式、柯勒照明等理论基础出发,逐步讲解Zemax建模、像差优化、制造可行性分析等核心步骤,并提供常见问题解决方案。通过实际案例展示如何将理论设计转化为可制造的优化方案,帮助工程师掌握从仿真到实际应用的关键技术。

weixin_29229989的博客 482

代码画验证码图片(二)

Jcaptcha、happy-captcha、easy-captcha

yw_2022的博客 371

深入解析PCIe Retimer:工作原理与典型应用场景

本文深入解析了PCIe Retimer的工作原理与核心价值。作为高速信号的中继再生器,Retimer通过时钟数据恢复和信号再生技术,有效解决长距离或复杂通道中的信号衰减与完整性问题,从而极大地扩展了PCIe链路的有效传输距离。文章详细阐述了其内部架构、自动与手动两种工作模式,并重点介绍了在长距离板间互连、复杂背板设计等典型应用场景中的关键作用。

weixin_29195615的博客 507

MATLAB仿真耗散孤子共振与金兹堡-朗道方程解析

耗散孤子共振(DSR)是非线性光学中的特殊脉冲现象,通过平衡非线性效应、色散与能量耗散实现稳定传输。其核心数学模型金兹堡-朗道方程(GLE)描述了光脉冲在增益介质中的演化规律,采用分步傅里叶方法(SSFM)可高效求解这类非线性偏微分方程。该技术在光纤激光器设计、高速光通信系统优化等领域具有重要价值,特别是在需要高能量脉冲保持稳定传输的场景。MATLAB数值仿真为理解DSR物理机制提供了直观工具,通过参数扫描可验证脉冲能量与宽度的线性关系特征,并为实际器件设计提供预测依据。

weixin_31240035的博客 257

jeecms 2012 源码分析(四)------ 验证码-jcaptcha分析

本文主要介绍jeecms中使用的验证码 jcapthcha.   这是个开源的软件,下载地址:   http://jcaptcha.sourceforge.net/   在jeecms中使用的版本是jcaptcha-1.0.jar.   web.xml里的配置 Jcaptcha com.jeecms.common.captcha.JcaptchaServlet

jun0052的专栏 2343

【上海大学计算机组成原理实验报告】七、程序转移机制

学习实现程序转移的硬件机制//掌握堆栈寄存器的使用//手动方式实现子程序调用转移过程//手动方式实现子程序返回转移过程//编程实现`OUT`寄存器交替显示`11`和`55`//若要求`11`和`55`各显示`50`次后停机,应该如何修改程序?//根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当`LDPC`有效时,如果此时`DUBS`上的值就是转移的目标地址,则此目标地址被打入`PC`,从而实现程序的转移;若`LDPC`为`0`是附带条件的,就形成“条件转移”。

HackerKevon的博客 2474

java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException

reating bean with name 'captchaFactory' defined in ServletContext resource [/WEB-INF/config/captcha-context.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: com/

张亮的博客 9168

笔试题-2023-思特威-数字电路设计(CIS)【纯净题目版】

10 笔试题-2023-思特威-数字电路设计(CIS)【纯净题目版】

w0shishabi的博客 1472

Python 爬虫实战:医学临床指南爬取(含 PDF 解析与结构化存储)

在当今数字化时代,医学临床指南作为医生进行科学诊疗的重要参考资料,包含大量经过临床验证的诊疗路径和建议。这些指南通常发布在权威医学网站上,数量庞大且更新频繁。如何自动化地抓取并存储这些指南,成为医疗数据分析、医学研究以及医疗 AI 模型训练等工作的关键第一步。本文将系统讲解如何利用 Python 爬虫技术从权威医学网站爬取临床指南内容,并实现 PDF 解析与结构化存储。

u014481728的博客 450

jeecms2012 框架分析 Spring mvc+hibernate+freemarker(开源项目)

今天我为大家做了一个 spring3 MVC 的例子,希望能对刚接触spring的朋友有所帮助。该流程属于大型项目的流程,涉及的知识比较希望大家耐心学习。   企业级项目实战(带源码升级版本)地址:http://zz563143188.iteye.com/blog/1845469 收集五年的开发资料及源码下载地址: http://pan.baidu.com/share/link?shar

三月神的专栏 1597

docker安装部署openclaw详细教程(安装、卸载、问题处理)

摘要: 本文详细介绍了使用Docker部署OpenClaw本地AI智能体框架的全流程,包括代码下载、容器化安装、交互式配置及Token设置。Docker方案解决了环境配置复杂、依赖冲突等痛点,提供开箱即用的隔离环境。教程涵盖常见错误(如EACCES权限问题、网关启动失败、设备配对需求)的解决方案,并提供了完整的卸载指南。通过Docker部署,用户可快速构建安全、一致的AI智能体开发环境,实现大模型与本地工具的高效连接。

少说,多做 4004

JEECMS源代码基本结构及相关技术简介

jeecms作为国内Java开源内容管理系统的龙头老大(感谢jeecms研发小组的辛苦劳作),技术架构也是比较成熟的,当然涉及到的技术也就相对多一些 看看jeecms内容管理系统使用了哪些技术 web开发当然离不开最基本的三大元素html、javascript和css,jeecms也不列外,用到的javascript库是jQuery为了可以生成真正的静态html页面,使用了FreeMark

mayy123456的博客 1881

大数据安全 | 期末复习(上)| 补档

大数据定义:无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

知识库搭建ing 2589

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JEECMS源代码节本结构及相关技术总结:

JEECMS源代码节本结构及相关技术总结: 1.jeecms内容管理系统的技术:web开发三大元素: html、javascript和css,jeecms中javascript使用jquery库。 2.生成真正静态html页面,使用FreeMarker模块技术,可方便自定义模板. 3.MVC框架使用SpringMVC,未使用传统的Struts作为web开发框架.

qq_32047637的博客 702

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

阅读jeecms源码总结

Jeecsm使用框架包括:springMVC,HIbernate(数据持久层框架),Quartz(作业调度框架),ant(自动编译构建框架,在自动生成模版类时用到),Httpclient,c3p数据池,ehcache缓存框架,dom4j框架(解析xml),DWR框架(该框架可以通过js调用java函数),Lucene全文检索框架,Jcaptcha验证码生成框架,sl4f和Log4j日志框架,Jmag

曉儂 713

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

搭建Java测试环境之练手项目

想学性能测试,没有练手项目怎么办?想学安全测试,没有练手项目怎么办?想学功能测试,没有练手项目怎么办?不要着急,现在就帮你解决这些问题。本课程讲解了在Windows系统测试环境和Linux系统测试环境下搭建练手项目,本课程以开源JEECMS项目为实例,并且屏蔽了前端验证码,可以对项目开展性能测试、压力测试、安全测试、功能测试等,非常适合性能测试爱好者、安全测试爱好者、功能测试爱好者进行实战演练。

上一篇: Jeecms源码分析(三)
下一篇: jeecms 2012 源码分析(1) 前台首页分析
robbin2117
博客等级 码龄14年 3粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值