• 周六. 7 月 13th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

work_04_谷歌验证码工具Kaptcha

admin

11 月 28, 2021

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;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


 

 

发表回复