验证码的作用

防止恶意破解密码、刷票、论坛灌水、刷页。

有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,实际上使用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,百度社区),我们利用比较简易的方式实现了这个功能。虽然登录麻烦一点,但是对网友的密码安全来说这个功能还是很有必要,也很重要。但我们还是 提醒大家要保护好自己的密码 ,尽量使用混杂了数字、字母、符号在内的 6 位以上密码,不要使用诸如 1234 之类的简单密码或者与用户名相同、类似的密码 ,免得你的账号被人盗用给自己带来不必要的麻烦。

验证码通常使用一些线条和一些不规则的字符组成,主要作用是为了防止一些黑客把密码数据化盗取。

Kaptcha 简介

Kaptcha 是一个可高度配置的实用验证码生成工具,可自由配置的选项如:

  • 验证码的字体
  • 验证码字体的大小
  • 验证码字体的字体颜色
  • 验证码内容的范围(数字,字母,中文汉字!)
  • 验证码图片的大小,边框,边框粗细,边框颜色
  • 验证码的干扰线
  • 验证码的样式(鱼眼样式、3D、普通模糊、...)

Kaptcha 详细配置表

Constant 描述 默认值
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

Spring MVC 整合 Kaptcha

POM

pom.xml 配置文件如下:

<dependency><groupId>com.google.code.kaptcha</groupId><artifactId>kaptcha</artifactId><version>2.3</version>
</dependency>

主要增加了 com.google.code.kaptcha:kaptcha 依赖

创建 Spring 配置

创建一个名为 spring-context-kaptcha.xml Spring 配置文件,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha"><property name="config"><bean class="com.google.code.kaptcha.util.Config"><constructor-arg><props><prop key="kaptcha.border">yes</prop><prop key="kaptcha.border.color">105,179,90</prop><prop key="kaptcha.textproducer.font.color">blue</prop><prop key="kaptcha.image.width">125</prop><prop key="kaptcha.image.height">45</prop><prop key="kaptcha.textproducer.font.size">45</prop><prop key="kaptcha.session.key">code</prop><prop key="kaptcha.textproducer.char.length">4</prop><prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop></props></constructor-arg></bean></property></bean>
</beans>

控制器关键代码

Controller 层的关键代码如下,主要作用为将生成的验证码放入 Session 并输出到页面

package com.funtl.my.shop.web.ui.controller;import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;@Controller
public class KaptchaController {@Autowiredprivate Producer captchaProducer;@RequestMapping(value = "verification", method = RequestMethod.GET)public ModelAndView verification(HttpServletRequest request, HttpServletResponse response) throws IOException {response.setDateHeader("Expires", 0);// Set standard HTTP/1.1 no-cache headers.response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");// Set IE extended HTTP/1.1 no-cache headers (use addHeader).response.addHeader("Cache-Control", "post-check=0, pre-check=0");// Set standard HTTP/1.0 no-cache header.response.setHeader("Pragma", "no-cache");// return a jpegresponse.setContentType("image/jpeg");// create the text for the imageString capText = captchaProducer.createText();// store the text in the sessionrequest.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);// create the image with the textBufferedImage bi = captchaProducer.createImage(capText);ServletOutputStream out = response.getOutputStream();// write the data outImageIO.write(bi, "jpg", out);try {out.flush();} finally {out.close();}return null;}
}

JSP 关键代码

JSP 使用 <img /> 标签去请求验证码图片

<img id="verification" src="/verification" style="cursor: pointer;" title="看不清?换一张" />

为图片绑定一个点击事件用于无刷新更换验证码

$(function () {// 刷新验证码$("#verification").bind("click", function () {$(this).hide().attr('src', '/verification?random=' + Math.random()).fadeIn();});
});

验证码生成工具Kaptcha相关推荐

  1. java 图形校验_java图形验证码生成工具类 web页面校验验证码

    java图形验证码生成工具类 web页面校验验证码 发布于 2020-7-14| 复制链接 摘记: 最近做验证码,参考网上案例,发现有不少问题,特意进行了修改和完善.验证码生成器: ```java i ...

  2. java图形验证码生成工具类

    转载自   java图形验证码生成工具类 生成验证码效果       ValidateCode.java 验证码生成类 package cn.dsna.util.images; import java ...

  3. google captcha验证码生成工具使用教程 样式配置

    1.引入依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha& ...

  4. 短信验证码生成工具类

    public class ImageCodeUtil { /** * 验证码难度级别 Simple-数字 Medium-数字和小写字母 Hard-数字和大小写字母 / public enum Secu ...

  5. 谷歌验证码kaptcha生成工具类

    谷歌验证码生成工具类 1.引入依赖 2.验证码配置类 3.controller层 4.测试 5.目录结构 1.引入依赖 <!-- google kaptcha依赖 --> <depe ...

  6. Java验证码(图片、字符串)生成工具

    验证码生成工具 本工具可以生成: 数字+字符 纯数字 纯字符 验证码样式: 字符串 base64 字符图片验证码 主要方法: generateCaptchaImage:获取图片验证码 generate ...

  7. web页面 验证码 生成

    web页面 验证码 生成 kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.code.kapt ...

  8. python生成验证码_python之验证码生成(gvcode与captcha)

    今天向大家总结一下python在做项目时用到的验证码生成工具:gvcode与captcha gvcode 全称:graphic-verification-code 安装: pip install gv ...

  9. 简单版:带干扰线的图形验证码生成

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.生成工具类; import java.awt.Color; import java.awt.Fo ...

最新文章

  1. 高金吉院士:让机器“自愈化”引领新科技变革
  2. 显著性检验python
  3. How many ways??
  4. 【Android】 -- 使用UncaughtExceptionHandler捕捉全局异常
  5. [导入]ASP.NET Ajax程序设计第II卷:客户端Microsoft Ajax Library与异步通信层及源代码.zip(101.50 MB)...
  6. 高德地图时间和实际差多少_带着“高德地图”去工作
  7. 蓝桥杯 ALGO-145 算法训练 4-1打印下述图形
  8. Java:中的String,StringBuilder,StringBuffer三者的区别
  9. SQL:postgresql中生成当前时间以及当前时间戳
  10. 苹果计算机格式化磁盘,苹果电脑怎么格式化
  11. ARPR软件破解带密码rar格式文件
  12. pythonQQ连连看秒杀脚本
  13. 论文的字数是怎么算的
  14. python 删除所有空间说说_怎么批量删除QQ空间说说?
  15. 微信公众号js接口安全域名的MP_verify_*.txt文件的放置路径
  16. 2021-2027年全球与中国彩色隐形眼镜行业市场前瞻与投资战略规划分析报告
  17. Item 3: Understand decltype
  18. swf怎么和php实现交互,用ActionScript与JavaScript实现Flash与网页的交互
  19. Spark高效数据分析03、Spark SQL
  20. urlretrieve的用法

热门文章

  1. C#开发------对对碰游戏
  2. PS运动鞋案例(记录学习过程)
  3. 【ArcGIS Pro微课1000例】0019:ArcGIS Pro从海洋的视角看世界---海洋投影(Spilhaus Projection)
  4. 英语中常见100个句型
  5. 《恒盛策略》沪深两市早盘放量上涨 北向资金净买入超124亿元
  6. 防火墙软件firewall使用
  7. sap 分摊分配不产生会计凭证的原因_#MM 物料凭证没有产生相应的会计凭证, 为什么呢? 怎么预防。...
  8. Python-Django-runserver:启动服务,google无法访问此网站,360、IE可以访问
  9. nginx-http-flv-module介绍
  10. 计算机超级用户设置了密码怎么删除6,Administrator密码移除、改正