图形验证码是用于验证用户身份的一种方式,通常在网站注册、登录或进行某些敏感操作时会使用。它通过展示一个包含随机字符或数字的图形,要求用户输入相应的字符或数字来证明其为真人而非机器人。图形验证码能有效地防止机器人攻击和恶意注册行为,提高网站的安全性。
本文将基于 SpringBoot 和原生的 Java awt 包,完成图形验证码的实现,源码在 中,需要者可自助参考。
在实现图形验证码之前,首先要导入依赖,比如 SpringBoot 依赖:
awt 包属于 Java 原生包,无需导入三方 maven 依赖,只需引入 JDK 即可。
接下来,就开始开发验证码的工具类,包括验证码配置、生成随机数、生成随机颜色、编写创建图片方法、编写构建函数,下面将逐一介绍。
首先是验证码的配置,创建 类,创建相应字段,包括字符个数、图片高度、图片宽度、干扰个数等参数,定义如下。
新建一个方法 ,用于实现生成随机数的功能,代码如下。
新建一个方法 ,用于实现生成随机颜色的功能,代码如下。
有了验证码配置之后,新建一个方法 ,用于实现图形验证码图片创建的逻辑,代码如下。
为了用尽可能精简的代码实现图形验证码,构造函数是比不可少的,开发者可以在构建对象时直接传入参数,实现图形验证码的设计,代码如下。
工具类编写完成后,就开始设计 API 接口了,可以分为验证码初始化和图片返回。
首先定义一个 init 接口,用户请求该接口时,系统利用 Java 的 UUID,生成一个随机字符串,并随机生成一个四位数字,放入缓存,返回该随机字符串,代码如下。
接口测试结果如下,接口返回了一个随机字符串:。
前端收到随机字符串 后,再次请求,拿走验证码图片,核心代码如下。
首先根据随机字符串,在 redis 中拿到验证码的值,在调用验证码工具类生成图片,返回前端。
系统集成了 Spring Security,需要引入并重写 WebSecurityConfig 类,重写 securityFilterChain 方法。
对于通过验证码的请求,给与放行,核心代码如下:
最终,基于 SpringBoot+原生 awt,实现花花绿绿的图形验证码。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/3881.html