refactor: 适配 ContiNew Starter 图形验证码

This commit is contained in:
Charles7c 2023-11-24 23:45:15 +08:00
parent b7fc5a5524
commit 8a11a020e0
7 changed files with 22 additions and 152 deletions

View File

@ -29,10 +29,10 @@
<artifactId>continew-starter-cache-redisson</artifactId>
</dependency>
<!-- ContiNew Starter JSON 模块 - Jackson -->
<!-- ContiNew Starter 验证码模块 - 图形验证码 -->
<dependency>
<groupId>top.charles7c.continew</groupId>
<artifactId>continew-starter-json-jackson</artifactId>
<artifactId>continew-starter-captcha-graphic</artifactId>
</dependency>
<!-- ContiNew Starter API 文档模块 -->
@ -41,6 +41,12 @@
<artifactId>continew-starter-api-doc</artifactId>
</dependency>
<!-- ContiNew Starter JSON 模块 - Jackson -->
<dependency>
<groupId>top.charles7c.continew</groupId>
<artifactId>continew-starter-json-jackson</artifactId>
</dependency>
<!-- ################ Spring Boot 相关 ################ -->
<!-- Java 邮件支持 -->
<dependency>
@ -106,11 +112,5 @@
<groupId>net.dreamlu</groupId>
<artifactId>mica-ip2region</artifactId>
</dependency>
<!-- Easy CaptchaJava 图形验证码,支持 gif、中文、算术等类型可用于 Java Web、JavaSE 等项目) -->
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -16,20 +16,10 @@
package top.charles7c.cnadmin.common.config.mybatis;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import cn.hutool.core.net.NetUtil;
/**
* MyBatis Plus 配置

View File

@ -19,17 +19,12 @@ package top.charles7c.cnadmin.common.config.properties;
import java.awt.*;
import lombok.Data;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import com.wf.captcha.*;
import com.wf.captcha.base.Captcha;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
/**
* 验证码配置属性
@ -43,9 +38,10 @@ import cn.hutool.core.util.StrUtil;
public class CaptchaProperties {
/**
* 图片验证码配置
* 过期时间
*/
private CaptchaImage image;
@Value("${captcha.graphic.expirationInMinutes}")
private long expirationInMinutes;
/**
* 邮箱验证码配置
@ -57,61 +53,6 @@ public class CaptchaProperties {
*/
private CaptchaSms sms;
/**
* 图片验证码配置
*/
@Data
public static class CaptchaImage {
/**
* 类型
*/
private CaptchaImageTypeEnum type;
/**
* 内容长度
*/
private int length;
/**
* 过期时间
*/
private long expirationInMinutes;
/**
* 宽度
*/
private int width = 111;
/**
* 高度
*/
private int height = 36;
/**
* 字体
*/
private String fontName;
/**
* 字体大小
*/
private int fontSize = 25;
/**
* 获取图片验证码对象
*
* @return 验证码对象
*/
public Captcha getCaptcha() {
Captcha captcha = ReflectUtil.newInstance(type.getClazz(), this.width, this.height);
captcha.setLen(length);
if (StrUtil.isNotBlank(this.fontName)) {
captcha.setFont(new Font(this.fontName, Font.PLAIN, this.fontSize));
}
return captcha;
}
}
/**
* 邮箱验证码配置
*/
@ -163,42 +104,4 @@ public class CaptchaProperties {
*/
private String templateId;
}
/**
* 图片验证码类型枚举
*/
@Getter
@RequiredArgsConstructor
private enum CaptchaImageTypeEnum {
/**
* 算术
*/
ARITHMETIC(ArithmeticCaptcha.class),
/**
* 中文
*/
CHINESE(ChineseCaptcha.class),
/**
* 中文闪图
*/
CHINESE_GIF(ChineseGifCaptcha.class),
/**
* 闪图
*/
GIF(GifCaptcha.class),
/**
* 特殊类型
*/
SPEC(SpecCaptcha.class),;
/**
* 验证码字节码类型
*/
private final Class<? extends Captcha> clazz;
}
}

View File

@ -56,6 +56,7 @@ import top.charles7c.cnadmin.common.util.MailUtils;
import top.charles7c.cnadmin.common.util.TemplateUtils;
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
import top.charles7c.continew.starter.cache.redisson.util.RedisUtils;
import top.charles7c.continew.starter.captcha.graphic.autoconfigure.GraphicCaptchaProperties;
/**
* 验证码 API
@ -73,17 +74,15 @@ public class CaptchaController {
private final CaptchaProperties captchaProperties;
private final ProjectProperties projectProperties;
private final GraphicCaptchaProperties graphicCaptchaProperties;
@Operation(summary = "获取图片验证码", description = "获取图片验证码Base64编码带图片格式data:image/gif;base64")
@GetMapping("/img")
public CaptchaResp getImageCaptcha() {
// 生成验证码
CaptchaProperties.CaptchaImage captchaImage = captchaProperties.getImage();
Captcha captcha = captchaImage.getCaptcha();
// 保存验证码
Captcha captcha = graphicCaptchaProperties.getCaptcha();
String uuid = IdUtil.fastUUID();
String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_KEY_PREFIX, uuid);
RedisUtils.set(captchaKey, captcha.text(), Duration.ofMinutes(captchaImage.getExpirationInMinutes()));
RedisUtils.set(captchaKey, captcha.text(), Duration.ofMinutes(captchaProperties.getExpirationInMinutes()));
return CaptchaResp.builder().uuid(uuid).img(captcha.toBase64()).build();
}

View File

@ -130,18 +130,15 @@ spring.mail:
--- ### 验证码配置
captcha:
## 图片验证码配置
image:
## 图形验证码配置
graphic:
enabled: true
# 类型
type: SPEC
# 内容长度
length: 4
# 过期时间
expirationInMinutes: 2
# 宽度
width: 111
# 高度
height: 36
## 邮箱验证码配置
mail:
# 内容长度

View File

@ -132,18 +132,15 @@ spring.mail:
--- ### 验证码配置
captcha:
## 图片验证码配置
image:
## 图形验证码配置
graphic:
enabled: true
# 类型
type: SPEC
# 内容长度
length: 4
# 过期时间
expirationInMinutes: 2
# 宽度
width: 111
# 高度
height: 36
## 邮箱验证码配置
mail:
# 内容长度

16
pom.xml
View File

@ -38,8 +38,6 @@
<justauth.version>1.16.5</justauth.version>
<easyexcel.version>3.3.2</easyexcel.version>
<ip2region.version>3.1.5.1</ip2region.version>
<easy-captcha.version>1.6.2</easy-captcha.version>
<hutool.version>5.8.22</hutool.version>
<!-- Maven Plugin Versions -->
<spotless.version>2.40.0</spotless.version>
@ -113,20 +111,6 @@
<version>${ip2region.version}</version>
</dependency>
<!-- Easy CaptchaJava 图形验证码,支持 gif、中文、算术等类型可用于 Java Web、JavaSE 等项目) -->
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>${easy-captcha.version}</version>
</dependency>
<!-- Hutool小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”) -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<!-- ################ 本项目子模块相关 ################ -->
<!-- API 模块(存放 Controller 层代码,打包部署的模块) -->
<dependency>