前言:验证码登录是很多项目中会涉及到的,为了数据安全和缓存验证码数据考虑,一般会要求后端来生成验证码,并存储在redis中,设置有效期,点击可刷新。本文,讲述springboot captcha生成验证码的全过程,并写一个简单的demo
创建springboot项目,点击Next
填写必要信息,点击Next
选择必要依赖,点击Next
确认项目信息,点击Finish
生成初始项目如下
添加工具依赖,这里我们使用hutool,版本选最新的即可,文章末尾会介绍
新建控制器CaptchaCtl
增加一个生成验证码的接口
调用CaptchaUtil里边的具体方法
三种方法主要区别
- createLineCaptcha:生成线段干扰验证码
- createCircleCaptcha:生成圆圈干扰验证码
- createShearCaptcha:生成扭曲干扰验证码
选择一种喜欢的,完善生成方法,其中code就是图片对应的真实文字,用来和用户输入值进行比较
运行项目,请求接口,前端获取到了图片流,后端打印出了验证码的真实值:tdxua
拷贝前端的图片流,去专业网站验证图片生成情况
图、文一致,至此springboot captcha生成验证码的功能就完成了。
贴上完整代码
- pom.xml
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.3.4.RELEASEversion>
<relativePath/>
parent>
<groupId>top.baohaipenggroupId>
<artifactId>captcha-bootartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>captcha-bootname>
<description>springboot生成验证码description>
<properties>
<java.version>1.8java.version>
properties>
<dependencies>
<dependency>
<groupId>cn.hutoolgroupId>
<artifactId>hutool-allartifactId>
<version>5.4.3version>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
<exclusions>
<exclusion>
<groupId>org.junit.vintagegroupId>
<artifactId>junit-vintage-engineartifactId>
exclusion>
exclusions>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
CaptchaCtl.java
package top.baohaipeng.captchaboot.controller;
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.ShearCaptcha;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName CaptchaCtl
* @Description TODO
* @Author 头条号:北海派bhp
* @Date 2020/9/25 21:42
* @Version 1.0
**/
@RestController
@RequestMapping
public class CaptchaCtl {
@GetMapping("captcha")
public String getCaptcha(){
ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(111, 36);
// 验证码对应的字符串
String code = captcha.getCode();
System.out.println("真实验证码是:" code);
// 返回图片流
return captcha.getImageBase64();
}
}
相关资料
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自于每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当。
Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
内容出处:,
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/procedure/13456.html