Spring 整合 Google Captcha 验证码
文章目录
- 验证码的作用
- Google Captcha简介
- Google Captcha 详细配置表
- Spring MVC 整合 Google Captcha
- POM
- 创建 Spring 配置
- Controller 层代码
- JSP 关键代码
验证码的作用
防止恶意破解密码、刷票、论坛灌水、刷页。
有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,实际上使用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,百度社区),我们利用比较简易的方式实现了这个功能。虽然登录麻烦一点,但是对网友的密码安全来说这个功能还是很有必要,也很重要。但我们还是 提醒大家要保护好自己的密码 ,尽量使用混杂了数字、字母、符号在内的 6 位以上密码,不要使用诸如 1234 之类的简单密码或者与用户名相同、类似的密码 ,免得你的账号被人盗用给自己带来不必要的麻烦。
验证码通常使用一些线条和一些不规则的字符组成,主要作用是为了防止一些黑客把密码数据化盗取。
Google Captcha简介
Kaptcha
是一个可高度配置的实用验证码生成工具,可自由配置的选项如:
- 验证码的字体
- 验证码字体的大小
- 验证码字体的字体颜色
- 验证码内容的范围(数字,字母,中文汉字!)
- 验证码图片的大小,边框,边框粗细,边框颜色
- 验证码的干扰线
- 验证码的样式(鱼眼样式、3D、普通模糊、…)
Google Captcha 详细配置表
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
|
图片样式 | 水纹 com.google.code.kaptcha.impl.WaterRipple |
\ | \ | 鱼眼 com.google.code.kaptcha.impl.FishEyeGimpy |
\ | \ | 阴影 com.google.code.kaptcha.impl.ShadowGimpy |
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 整合 Google Captcha
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 配置
创建一个名为 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();});
});
Spring 整合 Google Captcha 验证码相关推荐
- google captcha验证码生成工具使用教程 样式配置
1.引入依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha& ...
- 谷歌了java集成开发_Spring整合Kaptcha谷歌验证码工具的开发步骤
开发步骤: 1.加入依赖 com.google.code.kaptcha kaptcha 2.3 国内镜像无法下载该依赖,需要手动通过jar包在本地仓库安装一个依赖. 安装命令: mvn instal ...
- (二十三)admin-boot项目之captcha验证码整合
(二十三)captcha验证码整合 项目地址:https://gitee.com/springzb/admin-boot 如果觉得不错,给个 star 简介: 这是一个基础的企业级基础后端脚手架项目, ...
- Spring MVC 中使用 Google kaptcha 验证码
验证码是抵抗批量操作和恶意登录最有效的方式之一. 验证码从产生到现在已经衍生出了很多分支.方式.google kaptcha 是一个非常实用的验证码生成类库. 通过灵活的配置生成各种样式的验证码,并将 ...
- SpringBoot整合Captcha验证码(含代码)
1. 基本结构 使用Captcha生成验证码, 利用Redis存储验证码 Redis中的结构为, Key是32位的UUID, Value为Captcha的4位随机字母以及数字的集合 设定Redis过期 ...
- spring整合JDBC 实现拦截器用户的登录和注册的案例源代码及解析
前言:为了大家学习的方便,我自己完成了一个登录注册的小案例供大家参考,如有疑问?请私信博主,小主辛苦总结,望大家转载请标明出处. **项目介绍:**本项目使用的是spring整合jdbc实现用户的登录 ...
- mybatis3.2.3+spring整合
mybatis3.2.3+spring整合(附带源码) mybatis3.2.3整合spring其实就那么几步,网上很多文章大篇幅地将原理,很多时候把人给弄糊涂了,我的建议是"先学会怎么用, ...
- 将Jersey与Spring整合
Spring提供了很多好处,并通过其依赖项注入机制,应用程序生命周期管理和Hibernate支持(仅举几例)促进了最佳实践. 另外,当您想拥有干净的类似于REST的服务器端JSON Api时,我发现J ...
- ssh,ssm整合redis存储验证码
ssh整合redis存储验证码 SSM整合redis存储验证码 思路 **获取验证码部分:** **登录部分** 细节 详细代码 前端 后端 SSH 思路: 测试redis是否连接成功 详细代码 后端 ...
最新文章
- Linux rm 命令
- android 调用红外模块,Flutter调用Android模块的功能
- centos查看网络速率_CentOS 7查看网络带宽使用情况
- 编写Dockerfile的最佳实践
- 习题3.5 求链表的倒数第m个元素 (20 分)
- 2018.12.12 第九章虚拟内存
- 计蒜客 25985.Goldbach-米勒拉宾素数判定(大素数) (2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B)...
- mysql mmm安装管理详解
- linux 查看硬盘的uuid_ubuntu16.04 挂载新硬盘
- Xprinter XP-N160L 打印机驱动
- Zookeeper下载与安装教程(for windows)
- 微信注册验证成功之后不跳转_微信公众号申请教程,怎么创建公众号?
- 如何把pdf拆分成一页一页的图片?
- Python爬虫:网易云音乐评论爬取
- 2021-10-28项目集管理PgMP:刷新项目管理思维与架构︱项目管理者联盟联合创始人宣晓锋
- 揭秘!苏宁“融合基础设施”型零售实践大解析
- 热烈庆祝女朋友的生日
- php报错:PHP Startup Unable to load dynamic library
- 全国计算机等级分为几级,全国计算机等级考试2级分几类?
- CentOS 7下安装Google Chrome浏览器