欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > springboot生成、响应图片验证码

springboot生成、响应图片验证码

2025/9/30 14:13:38 来源:https://blog.csdn.net/zyxzyx666/article/details/141067524  浏览:    关键词:springboot生成、响应图片验证码

我们平时经常会碰见图片验证码,那么在springboot中我们该怎么实现呢

我们可以使用一款开源的验证码生成工具EasyCaptcha,其支持多种类型的验证码,例如gif、中文、算术等,并且简单易用,具体内容可参考其官方文档。

效果展示:

入门使用步骤 :

导入maven坐标:

<dependencies><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version></dependency>
</dependencies>

创建一个图像验证码类

(以字符串的形式把图片返回给前端,这里返回的不是图片URL,而是图片本身,通过使用base-64编码算法(算法功能:将任意二进制的内容编码成为一个字符串))

@Data
@Schema(description = "图像验证码")
@AllArgsConstructor
public class CaptchaVo {@Schema(description="验证码图片信息")private String image;@Schema(description="验证码key")private String key;
}

在controller类当中 

   @Operation(summary = "获取图形验证码")@GetMapping("login/captcha")public Result<CaptchaVo> getCaptcha() {CaptchaVo captchaVo = loginService.getCaptcha();return Result.ok(captchaVo);}

在实现类当中

 @Overridepublic CaptchaVo getCaptcha() {SpecCaptcha specCaptcha = new SpecCaptcha(130,48,4); //图片的宽、高、长度// 把redis中要保存的值统一转成小写String code = specCaptcha.text().toLowerCase();log.info("图片验证码为:"+code);// 生成唯一IDString key = RedisConstant.ADMIN_LOGIN_PREFIX + UUID.randomUUID().toString();ValueOperations opsForValue = redisTemplate.opsForValue();// 将验证码保存到redis当中(过期时间为60秒)opsForValue.set(key,code,RedisConstant.ADMIN_LOGIN_CAPTCHA_TTL_SEC,TimeUnit.SECONDS);return new CaptchaVo(specCaptcha.toBase64(),key);}

更多内容参考 官方文档。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词