区块链技术博客
www.b2bchain.cn

16.博客系统项目开发之 Kaptcha 验证码功能实现求职学习资料

本文介绍了16.博客系统项目开发之 Kaptcha 验证码功能实现求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

Spring Boot 博客系统项目开发之 Kaptcha 验证码功能实现

16.博客系统项目开发之 Kaptcha 验证码功能实现

本项目的开源仓库地址为:https://github.com/ZHENFENG13/My-Blog

除 My-Blog 项目外,我也在维护另外一个开源项目,仓库地址为:https://github.com/newbee-ltd/newbee-mall

16.博客系统项目开发之 Kaptcha 验证码功能实现

感兴趣的朋友可以去关注一下。

文章总览

我们将在这一节学习在网站中使用验证码的相关知识,以及如何使用 Spring Boot 生成验证码,并进行后续的验证操作,生成验证码的方式以及案例有很多,本教程中所选择的方案是 Google 的 kaptcha 框架。

知识点

  • 认识验证码
  • Spring Boot 整合 kaptcha 步骤
  • 生成验证码操作
  • 对验证码进行提交验证

环境

  • JDK 1.8 或者更高版本
  • Spring Boot 2.1.0-RELEASE
  • Maven 3+

验证码

验证码介绍

谈起验证码这个话题,相信大家都应该很熟悉,在日常上网的时候经常会看到验证码的逻辑设计,比如登陆账号、论坛发帖、购买商品时网站都会要求用户在实际操作之前去输入验证码,验证码的生成规则或者展现形式也各不相同,但是这个设计确实已经存在于各大网站中,以下是百度百科中对它的定义:

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答 CAPTCHA 的问题,所以回答出问题的用户就可以被认为是人类。

验证码的作用

由于在后面的实战项目开发中会用到验证码这个功能,因此选择在这篇教程中进行介绍和功能演示。其实验证码设计的主要目的以及它最大的作用也就是防止不法分子在短时间内用机器批量的重复操作

16.博客系统项目开发之 Kaptcha 验证码功能实现

我们接下来开发的博客网站会在后台登陆以及用户评论功能模块中使用验证码,这样可以有效防止恶意用户对网站进行破坏,实际上是用验证码是现在很多网站通行的方式,虽然会使得某些操作变得麻烦一点,但是对大部分的功能场景来说这个功能还是很有必要,也很重要,所以不要觉得它麻烦,如果增加这样一个功能可以使得网站更加安全,那就是十分值得的。

Spring Boot 整合 kaptcha

简单的介绍完验证码之后,接下来,我们还是通过一个案例来讲解如何使用 Spring Boot 来生成验证码,之后我们再对验证码的显示以及后端验证进行案例讲解。

以下为操作步骤:

添加依赖

Spring Boot 整合 kaptcha 的第一步就是增加依赖,首先我们需要将其依赖配置增加到 pom.xml 文件中,此时的 pom.xml 文件内容如下:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>2.1.0.RELEASE</version>         <relativePath/>     </parent>     <groupId>com.lou.springboot</groupId>     <artifactId>spring-boot-captcha</artifactId>     <version>0.0.1-SNAPSHOT</version>     <name>spring-boot-captcha</name>     <description>Demo project for Spring Boot</description>     <properties>         <java.version>1.8</java.version>     </properties>     <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>         <!-- 验证码 -->         <dependency>             <groupId>com.github.penggle</groupId>             <artifactId>kaptcha</artifactId>             <version>2.3.2</version>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>         </dependency>     </dependencies>     <build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>             </plugin>         </plugins>     </build> </project>

如果是在本地开发的话,只需要等待 jar 包及相关依赖下载完成即可。

配置

注册 DefaultKaptcha 到 IOC 容器中,新建 config 包,之后新建 KaptchaConfig 类,内容如下:

package com.lou.springboot.config;  import com.google.code.kaptcha.impl.DefaultKaptcha; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import com.google.code.kaptcha.util.Config; import java.util.Properties;  @Component public class KaptchaConfig {     @Bean     public DefaultKaptcha getDefaultKaptcha(){         com.google.code.kaptcha.impl.DefaultKaptcha defaultKaptcha = new com.google.code.kaptcha.impl.DefaultKaptcha();         Properties properties = new Properties();         // 图片边框         properties.put("kaptcha.border", "no");         // 字体颜色         properties.put("kaptcha.textproducer.font.color", "black");         // 图片宽         properties.put("kaptcha.image.width", "160");         // 图片高         properties.put("kaptcha.image.height", "40");         // 字体大小         properties.put("kaptcha.textproducer.font.size", "30");         // 验证码长度         properties.put("kaptcha.textproducer.char.space", "5");         // 字体         properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");         Config config = new Config(properties);         defaultKaptcha.setConfig(config);         return defaultKaptcha;     } }

这里就是对生成的图片验证码的规则配置,如颜色、宽高、长度、字体等等,可以根据需求自行修改这些规则,之后就可以生成自己想要的验证码了。

验证码的生成与显示

后端处理

在 controller 包中新建 KaptchaController,之后注入刚刚配置好的 DefaultKaptcha 类,然后就可以新建一个方法,在方法里可以生成验证码对象,并以图片流的方式写到前端以供显示,代码如下:

“`java
package com.lou.springboot.controller;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
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;

Spring Boot 博客系统项目开发之 Kaptcha 验证码功能实现

16.博客系统项目开发之 Kaptcha 验证码功能实现

本项目的开源仓库地址为:https://github.com/ZHENFENG13/My-Blog

除 My-Blog 项目外,我也在维护另外一个开源项目,仓库地址为:https://github.com/newbee-ltd/newbee-mall

16.博客系统项目开发之 Kaptcha 验证码功能实现

感兴趣的朋友可以去关注一下。

文章总览

我们将在这一节学习在网站中使用验证码的相关知识,以及如何使用 Spring Boot 生成验证码,并进行后续的验证操作,生成验证码的方式以及案例有很多,本教程中所选择的方案是 Google 的 kaptcha 框架。

知识点

  • 认识验证码
  • Spring Boot 整合 kaptcha 步骤
  • 生成验证码操作
  • 对验证码进行提交验证

环境

  • JDK 1.8 或者更高版本
  • Spring Boot 2.1.0-RELEASE
  • Maven 3+

验证码

验证码介绍

谈起验证码这个话题,相信大家都应该很熟悉,在日常上网的时候经常会看到验证码的逻辑设计,比如登陆账号、论坛发帖、购买商品时网站都会要求用户在实际操作之前去输入验证码,验证码的生成规则或者展现形式也各不相同,但是这个设计确实已经存在于各大网站中,以下是百度百科中对它的定义:

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答 CAPTCHA 的问题,所以回答出问题的用户就可以被认为是人类。

验证码的作用

由于在后面的实战项目开发中会用到验证码这个功能,因此选择在这篇教程中进行介绍和功能演示。其实验证码设计的主要目的以及它最大的作用也就是防止不法分子在短时间内用机器批量的重复操作

16.博客系统项目开发之 Kaptcha 验证码功能实现

我们接下来开发的博客网站会在后台登陆以及用户评论功能模块中使用验证码,这样可以有效防止恶意用户对网站进行破坏,实际上是用验证码是现在很多网站通行的方式,虽然会使得某些操作变得麻烦一点,但是对大部分的功能场景来说这个功能还是很有必要,也很重要,所以不要觉得它麻烦,如果增加这样一个功能可以使得网站更加安全,那就是十分值得的。

Spring Boot 整合 kaptcha

简单的介绍完验证码之后,接下来,我们还是通过一个案例来讲解如何使用 Spring Boot 来生成验证码,之后我们再对验证码的显示以及后端验证进行案例讲解。

以下为操作步骤:

添加依赖

Spring Boot 整合 kaptcha 的第一步就是增加依赖,首先我们需要将其依赖配置增加到 pom.xml 文件中,此时的 pom.xml 文件内容如下:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>2.1.0.RELEASE</version>         <relativePath/>     </parent>     <groupId>com.lou.springboot</groupId>     <artifactId>spring-boot-captcha</artifactId>     <version>0.0.1-SNAPSHOT</version>     <name>spring-boot-captcha</name>     <description>Demo project for Spring Boot</description>     <properties>         <java.version>1.8</java.version>     </properties>     <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>         <!-- 验证码 -->         <dependency>             <groupId>com.github.penggle</groupId>             <artifactId>kaptcha</artifactId>             <version>2.3.2</version>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>         </dependency>     </dependencies>     <build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>             </plugin>         </plugins>     </build> </project>

如果是在本地开发的话,只需要等待 jar 包及相关依赖下载完成即可。

配置

注册 DefaultKaptcha 到 IOC 容器中,新建 config 包,之后新建 KaptchaConfig 类,内容如下:

package com.lou.springboot.config;  import com.google.code.kaptcha.impl.DefaultKaptcha; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import com.google.code.kaptcha.util.Config; import java.util.Properties;  @Component public class KaptchaConfig {     @Bean     public DefaultKaptcha getDefaultKaptcha(){         com.google.code.kaptcha.impl.DefaultKaptcha defaultKaptcha = new com.google.code.kaptcha.impl.DefaultKaptcha();         Properties properties = new Properties();         // 图片边框         properties.put("kaptcha.border", "no");         // 字体颜色         properties.put("kaptcha.textproducer.font.color", "black");         // 图片宽         properties.put("kaptcha.image.width", "160");         // 图片高         properties.put("kaptcha.image.height", "40");         // 字体大小         properties.put("kaptcha.textproducer.font.size", "30");         // 验证码长度         properties.put("kaptcha.textproducer.char.space", "5");         // 字体         properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");         Config config = new Config(properties);         defaultKaptcha.setConfig(config);         return defaultKaptcha;     } }

这里就是对生成的图片验证码的规则配置,如颜色、宽高、长度、字体等等,可以根据需求自行修改这些规则,之后就可以生成自己想要的验证码了。

验证码的生成与显示

后端处理

在 controller 包中新建 KaptchaController,之后注入刚刚配置好的 DefaultKaptcha 类,然后就可以新建一个方法,在方法里可以生成验证码对象,并以图片流的方式写到前端以供显示,代码如下:

“`java
package com.lou.springboot.controller;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
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;

Spring Boot 博客系统项目开发之 Kaptcha 验证码功能实现

16.博客系统项目开发之 Kaptcha 验证码功能实现

本项目的开源仓库地址为:https://github.com/ZHENFENG13/My-Blog

除 My-Blog 项目外,我也在维护另外一个开源项目,仓库地址为:https://github.com/newbee-ltd/newbee-mall

16.博客系统项目开发之 Kaptcha 验证码功能实现

感兴趣的朋友可以去关注一下。

文章总览

我们将在这一节学习在网站中使用验证码的相关知识,以及如何使用 Spring Boot 生成验证码,并进行后续的验证操作,生成验证码的方式以及案例有很多,本教程中所选择的方案是 Google 的 kaptcha 框架。

知识点

  • 认识验证码
  • Spring Boot 整合 kaptcha 步骤
  • 生成验证码操作
  • 对验证码进行提交验证

环境

  • JDK 1.8 或者更高版本
  • Spring Boot 2.1.0-RELEASE
  • Maven 3+

验证码

验证码介绍

谈起验证码这个话题,相信大家都应该很熟悉,在日常上网的时候经常会看到验证码的逻辑设计,比如登陆账号、论坛发帖、购买商品时网站都会要求用户在实际操作之前去输入验证码,验证码的生成规则或者展现形式也各不相同,但是这个设计确实已经存在于各大网站中,以下是百度百科中对它的定义:

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答 CAPTCHA 的问题,所以回答出问题的用户就可以被认为是人类。

验证码的作用

由于在后面的实战项目开发中会用到验证码这个功能,因此选择在这篇教程中进行介绍和功能演示。其实验证码设计的主要目的以及它最大的作用也就是防止不法分子在短时间内用机器批量的重复操作

16.博客系统项目开发之 Kaptcha 验证码功能实现

我们接下来开发的博客网站会在后台登陆以及用户评论功能模块中使用验证码,这样可以有效防止恶意用户对网站进行破坏,实际上是用验证码是现在很多网站通行的方式,虽然会使得某些操作变得麻烦一点,但是对大部分的功能场景来说这个功能还是很有必要,也很重要,所以不要觉得它麻烦,如果增加这样一个功能可以使得网站更加安全,那就是十分值得的。

Spring Boot 整合 kaptcha

简单的介绍完验证码之后,接下来,我们还是通过一个案例来讲解如何使用 Spring Boot 来生成验证码,之后我们再对验证码的显示以及后端验证进行案例讲解。

以下为操作步骤:

添加依赖

Spring Boot 整合 kaptcha 的第一步就是增加依赖,首先我们需要将其依赖配置增加到 pom.xml 文件中,此时的 pom.xml 文件内容如下:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>2.1.0.RELEASE</version>         <relativePath/>     </parent>     <groupId>com.lou.springboot</groupId>     <artifactId>spring-boot-captcha</artifactId>     <version>0.0.1-SNAPSHOT</version>     <name>spring-boot-captcha</name>     <description>Demo project for Spring Boot</description>     <properties>         <java.version>1.8</java.version>     </properties>     <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>         <!-- 验证码 -->         <dependency>             <groupId>com.github.penggle</groupId>             <artifactId>kaptcha</artifactId>             <version>2.3.2</version>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>         </dependency>     </dependencies>     <build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>             </plugin>         </plugins>     </build> </project>

如果是在本地开发的话,只需要等待 jar 包及相关依赖下载完成即可。

配置

注册 DefaultKaptcha 到 IOC 容器中,新建 config 包,之后新建 KaptchaConfig 类,内容如下:

package com.lou.springboot.config;  import com.google.code.kaptcha.impl.DefaultKaptcha; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import com.google.code.kaptcha.util.Config; import java.util.Properties;  @Component public class KaptchaConfig {     @Bean     public DefaultKaptcha getDefaultKaptcha(){         com.google.code.kaptcha.impl.DefaultKaptcha defaultKaptcha = new com.google.code.kaptcha.impl.DefaultKaptcha();         Properties properties = new Properties();         // 图片边框         properties.put("kaptcha.border", "no");         // 字体颜色         properties.put("kaptcha.textproducer.font.color", "black");         // 图片宽         properties.put("kaptcha.image.width", "160");         // 图片高         properties.put("kaptcha.image.height", "40");         // 字体大小         properties.put("kaptcha.textproducer.font.size", "30");         // 验证码长度         properties.put("kaptcha.textproducer.char.space", "5");         // 字体         properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");         Config config = new Config(properties);         defaultKaptcha.setConfig(config);         return defaultKaptcha;     } }

这里就是对生成的图片验证码的规则配置,如颜色、宽高、长度、字体等等,可以根据需求自行修改这些规则,之后就可以生成自己想要的验证码了。

验证码的生成与显示

后端处理

在 controller 包中新建 KaptchaController,之后注入刚刚配置好的 DefaultKaptcha 类,然后就可以新建一个方法,在方法里可以生成验证码对象,并以图片流的方式写到前端以供显示,代码如下:

“`java
package com.lou.springboot.controller;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
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;

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 16.博客系统项目开发之 Kaptcha 验证码功能实现求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们