Kaptcha验证码的使用

Java具体学习内容,请移至: JAVA每天进步一点点

验证码的作用

验证码在我们的生活中可谓是随处可见,用户校验、用户登录…,有时候我们觉得验证码很麻烦,太过于繁琐,那么为什么还要使用验证码呢?
在这里插入图片描述

验证码的作用?

  1. 有效防止黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试。
  2. 防止机器大规模注册,机器暴力破解数据密码等危害。
  3. 防止个人信息的大量丢失

正是因为添加了验证码验证,才使得我们的大量操作得以安全的进行、才使得我们的系统能够正常运行,虽然登录麻烦了一点,但是还是必不可少的。


Kaptcha介绍

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

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

Kaptcha的配置详情表

Constant描述默认值
kaptcha.border图片边框,合法值:yes , noyes
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.ShadowGimpycom.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.keysession keyKAPTCHA_SESSION_KEY
kaptcha.session.datesession dateKAPTCHA_SESSION_DATE

Kaptcha的使用

1.使用Kaptcha,添加Kaptcha依赖

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

2.创建kaptcha.xml配置文件(在使用时,该配置文件要加载)

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

3.创建Controller层关键代码CodeController

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 javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.image.BufferedImage;/*** @program: UserLogin* @description: 验证码生成* @author: Mr.Gao* @create: 2021-08-05 17:44**/
@Controller
public class CodeController {@Autowiredprivate Producer captchaProducer = null;@RequestMapping("/kaptcha")public void getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception {HttpSession session = request.getSession();response.setDateHeader("Expires", 0);response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");response.addHeader("Cache-Control", "post-check=0, pre-check=0");response.setHeader("Pragma", "no-cache");response.setContentType("image/jpeg");//生成验证码String capText = captchaProducer.createText();session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);//向客户端写出BufferedImage bi = captchaProducer.createImage(capText);ServletOutputStream out = response.getOutputStream();ImageIO.write(bi, "jpg", out);try {out.flush();} finally {out.close();}}}

4.页面验证码图片显示

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

给图片绑定点击事件,刷新验证码

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

验证码效果图:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/55432.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五音不全?手把手教你用自己声音唱任何歌;最详细的Auto-GPT整理;4月AI绘画模型推荐;HayoAI平台简直太酷了 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『ChatGPT Code Interpreter Magic』魔法&#xff01;离谱&#xff01;正在怀疑人生… OpenAI 近期面向部分用户发放了 Code Interp…

一个美国人到中国当产品经理的心得:中国App设计真好!

TO 导读&#xff1a;应用软件层出不穷&#xff0c;各个国家的人为自己生活的便利设计出各款的应用。然而&#xff0c;同样的应用&#xff0c;是否会因为中西方文化的差异&#xff0c;或者是生活方式的不同&#xff0c;导致相同应用的设计有所不同吗&#xff1f;是的&#xff0c…

一款基于ethereum以太链的手机app应用status.im

2019独角兽企业重金招聘Python工程师标准>>> Status.im开发平台介绍 https://status.im/ 一款集成了ethereum钱包&#xff0c;区块链聊天IM和Dapp分发市场功能的以太链轻量app&#xff08;light client&#xff09;。app目前还在公开测试中。最主要的是&#xff0c;…

原生开发IM即时通讯APP安卓iOSPCweb四端齐全

技术开发语言&#xff1a; 后台管理端&#xff1a;Java、Mongodb数据库 安卓端&#xff1a;Java iOS端&#xff1a;obje-ctive-C PC端&#xff1a;Typescri-pt web端&#xff1a;HTML 功能简单介绍&#xff1a; 单聊&#xff1a;文字&#xff0c;语音&#xff0c;音视频…

人工智能安全框架概述

人工智能安全问题与研究 在自动驾驶、客服机器人等人工智能应用中发生了一系列安全事件&#xff0c;并引发了人们对人工智能应用前景的担忧&#xff0c;去年爆火的Chatgpt也有在人的引诱下发生了“自己出逃的想法”&#xff0c;这种种现象都显现出需要对人工智能安全的问题研究…

chatgpt赋能python:Python建立长连接:实现高效网络通信的解决方案

Python建立长连接&#xff1a;实现高效网络通信的解决方案 在现代网络应用中&#xff0c;大多数客户端和服务器之间都采用长连接通信。长连接具有一些显著的优点&#xff0c;例如减少通信开销、降低延迟、提高服务器吞吐量等。本文将介绍长连接的基本原理和Python实现长连接的…

一个POC的诞生,再见 ,脚本小子

hello&#xff0c;大家好我是你们的坤哥&#xff0c;聊聊安全绕不开的话题POC&#xff08;漏洞概念验证&#xff09;&#xff0c;只知道拿着工具扫的你&#xff0c;尝试过自己写POC吗&#xff1f; 看坤哥极限拉扯你和大手子之间的差距。 配合B站视频观看更佳&#xff1a; PO…

重磅!!即日起,图观引擎正式开放注册!

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 图观引擎 自2021年5月 上线内测 历经数千名用户的测试验证和不断的升级迭代 今天终于迎来了好消息&#xff01;&#xff01; 即日起 图观 数字孪生应用开发引擎 正式开放注册 无需内测邀请码 面向所有人开放 公有云 数字…

「硬核」实操如何拥有一个自己的数字人模型

一、前言 近年来&#xff0c;随着人工智能技术&#xff0c;VR&#xff0c;元宇宙等技术的发展&#xff0c;数字人&#xff08;Digital Human&#xff09;逐渐成为研究的热点之一&#xff0c;数字人是指通过计算机技术模拟出的具有人类外表&#xff0c;动作和语言能力的虚拟人物…

「硬核实操」如何拥有一个自己的数字人模型

作者&#xff1a;京东健康 陈刚 一、前言 近年来&#xff0c;随着人工智能技术&#xff0c;VR&#xff0c;元宇宙等技术的发展&#xff08;可以阅读 从Chat-GPT看&#x1f525;技术概念及医疗领域科技与应用场景 &#xff09;&#xff0c;数字人&#xff08;Digital Human&am…

Fay数字人助理版是fay开源项目的重要分支,专注于构建智能数字助理的开源解决方案。它提供了灵活的模块化设计,使开发人员能够定制和组合各种功能模块,包括情绪分析、NLP处理、语音合成和语音输出等。

Fay数字人助理 Fay数字人助理版是fay开源项目的重要分支&#xff0c;专注于构建智能数字助理的开源解决方案。它提供了灵活的模块化设计&#xff0c;使开发人员能够定制和组合各种功能模块&#xff0c;包括情绪分析、NLP处理、语音合成和语音输出等。Fay数字人助理版为开发人员…

ChatGLM模型部署分享

ChatGPT云炬学长 ​关注 先看结果&#xff1a; 部署问题&#xff1a;显卡太小无法加载使用&#xff0c;期间也换了N个显卡&#xff0c;太穷了!>-< 模型描述&#xff1a; 清华开源项目ChatGLM-6B发布。这一项目可以直接部署在本地计算机上&#xff0c;无需联网即可让你…

UE5引擎入门,第一周总结:简单的旋转魔方小项目

基础知识总结 蓝图节点 1.蓝图中的节点是封装好的函数。这些函数功能强大&#xff0c;但由于数目繁多且内部实现不明&#xff08;注&#xff1a;可能是开发环境问题&#xff0c;转到C代码这一步永远无法执行&#xff09;&#xff0c;总会出现一些不明所以的bug&#xff08;比…

PS学习记录-矢量图和位图

目录 概念说明 矢量图 位图 常见的格式类型 矢量图文件格式举例&#xff1a; 位图&#xff08;标量图&#xff09;文件格式举例&#xff1a; 两种图片的适用范围 两种图片的核心差异 1、缩放保真 2、色彩不同 3、格式 4、常用绘图工具 5、占用空间 6、转化 概念说…

Unity中使用矢量图SVG

1.打开PackageManager 2.点击左上角的号&#xff0c;Add package from git URL 3.输入&#xff1a;com.unity.vectorgraphics 免费下SVG测试地址&#xff1a;https://undraw.co/illustrations

ArcMap将png图像矢量化

一、将png图像转成灰度图 图像为语义分割模型生成的二值索引图像&#xff0c;直接用cv2的灰度读取图像模式&#xff0c;然后再另存。 二、配准 首先在ArcGis中加载带有空间坐标的图像&#xff0c;这里选择的是测试图像对应的。&#xff08;加载图像可以直接拉着拖进来&#…

Android开发中使用矢量图

本文我们将介绍一些关于Android矢量图的相关知识点。最新的项目中要求以矢量图替代传统的.png资源文件&#xff0c;所以特意学习了一下Android中的矢量图相关概念&#xff0c;不得不说矢量图还是一个比较好的适配方案。Android从Android5.0开始引入了对矢量图的支持&#xff0c…

Android使用svg矢量图

可缩放矢量图形,SVG不会像位图一样因为缩放而让图片质量下降。 优点&#xff1a;节约空间与内存&#xff0c;常用于简单小图标 SVG 使用 XML 格式定义图形&#xff0c;标准svg根节点为<svg> 在Android中通过Vector实现对svg的支持&#xff0c;根节点为<vector>。 …

位图和矢量图转换工具推荐

相信做平面设计的大家&#xff0c;都遇到过素材是位图放大后不清晰的情况&#xff0c;十分影响设计的美观。而矢量图是根据几何特性来绘制图形&#xff0c;放大后图像不会失真。所以这篇文章教大家位图转矢量图。 一、使用CorelDRAW CorelDRAW是一款专业的平面设计软件,专注于…

将图片快速转换为矢量地图-半自动地图矢量化工具raster_tracer的使用方法

最近需要根据一幅jpeg地图绘制矢量地图&#xff0c;如果一点一点绘制太麻烦&#xff0c;又不想装庞大的arcgis用arcscan处理&#xff0c;查了些资料&#xff0c;发现深度学习在这方面也没啥进展。最后查到了QGIS有一款半自动地图矢量化工具raster_tracer可以解决这个问题&#…