使用BotDetect Captcha在SpringMCV项目中生成验证码图片

一、介绍

直接引用官网的介绍:

BotDetect™CAPTCHA生成器是一种使用Captcha挑战的表单安全解决方案,对人而言很容易,但对于漫游器来说很难,以防止自动页面发布。使用生成的Captcha图像来保护机器免受访问受保护的网站功能的影响,专门设计为不能达到计算机视觉和OCR技术。BotDetect还提供了一种音频验证码替代方案,以便让视障障碍的用户访问网站,从而使您能够制作WCAG和符合第508条的网站。

使用之后,感觉这个验证码生成工具确实是蛮强大的,不仅验证码样式多,而且还能直接读出来。官网

二、环境的搭建

1、添加依赖

官网添加依赖的介绍:

直接下载jar包。在官网,我没有找到找到下载jar的地址,只找到下载实例项目的地址https://captcha.com/botdetect-java-captcha-component-free.zip

我已将四个jar包上传到csdn中,地址http://download.csdn.net/detail/wqh8522/9921621

使用maven,简单。

 <dependency>
        <groupId>com.captcha</groupId>
        <artifactId>botdetect-jsp20</artifactId>
        <version>4.0.beta3</version>
    </dependency>

    <repository>
        <id>captcha</id>
        <name>BotDetect Captcha Repository</name>
        <url>https://git.captcha.com/maven.git/blob_plain/HEAD:/</url>
    </repository>

2、注册CaptchaServlet

因为该工具生成验证码试试基于servlet的,所以必须现在web.xml中注册

<servlet>
        <servlet-name>BotDetect Captcha</servlet-name>
        <servlet-class>com.captcha.botdetect.web.servlet.CaptchaServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BotDetect Captcha</servlet-name>
        <url-pattern>/botdetectcaptcha</url-pattern>
    </servlet-mapping>

3、在页面添加

在文件的顶部添加BotDetect taglib声明:

<%@taglib prefix="botDetect" uri="https://captcha.com/java/jsp" %>

在表单中显示验证码,还需要添加Html元素

<botDetect:captcha id="valid_img" userInputID="captchaCode"/>

将这里添加到页面将会自动生成验证码图片,这里可以直接个该标签设置属性,可以控制图片大小、验证码的数量等基本信息。具体属性可以参考官方文档。

二、直接使用表单提交校验验证码

页面代码:

用户名:<input type="text" name="username" id="username"/><br>
    密  码:<input type="password" name="userpasswd" id="userpasswd"/><br>
    验证码:<input name="captchaCode" type="text" id="captchaCode"/>
    <botDetect:captcha id="valid_img" userInputID="captchaCode" codeLength="5" imageHeight="50" imageWidth="150"/>
    <br>
    <input type="submit" value="直接提交表单">

后台验证代码:

//valid_img是前台botDetect:captcha标签的id
    Captcha captcha = Captcha.load(request, "valid_img");
    //captchaCode为用户输入的验证码,匹配验证码,为真返回true,为假返回false
    boolean isHuman = captcha.validate(captchaCode);

三、使用jquery的ajax校验验证码

这里jquery的ajax就不再赘述,直接说验证码的与直接提交表单的不同。
首先我们需要获取用户输入的验证码。

var captchaCode = $("#captchaCode").val();

然后我们去查看页面的源代码,会发现生成这么一顿乱七八糟的东西,这时注意下面的两个隐藏域,第一个就是我们需要的:

var BDC_VCID_basicExample = $("#BDC_VCID_valid_img").val();

然后把页面这两个作为请求参数传入后台

后台获取这两个参数:

    String instanceId = request.getParameter("instanceId");
    //这里依旧是使用标签的id创建Captcha对象
    Captcha captcha = Captcha.load(request, "valid_img");
    //校验验证码
    boolean isHuman = captcha.validate(captchaCode,instanceId);

另外,在验证失败的时候都是要刷新验证码,但这里默认是不刷新的,需要我们自己去写代码,获取图片的src

还是上图:
这里写图片描述

这里注意黑色框内的,这个就是验证码图片,我们需要获取该src,并重新给控件赋值;后面的添加随机数是为了防止出现缓冲问题。

$("#valid_img_CaptchaImage").src = $("#valid_img_CaptchaImage").attr("src")+"&d="+Math.random();

至此,该验证码生成控件整合SpringMVC的简单使用到这就结束了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值