这里就以Springboot的Controller层接口为例来有演示接口
看下面的函数,这里的Kv底层维护的就是一个map,用来返回的:
@GetMapping("/oauth/captcha")
@ApiOperation(value = "获取验证码")
public Kv captcha() {
SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
String verCode = specCaptcha.text().toLowerCase();
String key = UUID.randomUUID().toString();
// 存入redis并设置过期时间为30分钟
bladeRedis.setEx(CacheNames.CAPTCHA_KEY + key, verCode, Duration.ofMinutes(30));
// 将key和base64返回给前端
return Kv.create().set("key", key).set("image", specCaptcha.toBase64());
}
SpecCaptcha,用于生成验证码,库Maven: com.github.whvcse:easy-captcha:1.6.2
|
库名 |
特点 |
|
easy-captcha |
轻量级、支持多种类型、配置简单 |
|
Hutool-Captcha |
功能类似,集成在Hutool工具包中 |
|
Kaptcha |
老牌验证码库,但配置较复杂 |
|
AJ-Captcha |
支持行为验证(滑动、点选等),适合高安全场景 |
- UUID,通用唯一识别码,32个16进制字符,优点是不容易重复,每秒生成1亿个,100年后重复概率为50%,缺点是存储的空间比较大,示例:
123e4567-e89b-12d3-a456-426614174000
- 验证码图片的Base64编码是一种将二进制图像数据转换为文本字符串的技术,主要用于前端的图片展示,不需要通过http请求,同时安全传输,简化开发流程,及时体积大了33%左右,适合小图片
897

被折叠的 条评论
为什么被折叠?



