diff --git a/win-dependencies/pom.xml b/win-dependencies/pom.xml
index 6b98e54e..fd388be8 100644
--- a/win-dependencies/pom.xml
+++ b/win-dependencies/pom.xml
@@ -69,9 +69,9 @@
4.6.3
2.2.1
3.1.758
- 1.0.4
1.6.1
2.12.2
+ 2.3.3
@@ -543,6 +543,19 @@
${jsoup.version}
+
+
+ pro.fessional
+ kaptcha
+ ${kaptcha.version}
+
+
+ javax.servlet
+ servlet-api
+
+
+
+
com.squareup.okio
@@ -593,12 +606,6 @@
-
- com.xingyuv
- spring-boot-starter-justauth
- ${justauth.version}
-
-
org.jeecgframework.jimureport
diff --git a/win-framework/win-spring-boot-starter-captcha/pom.xml b/win-framework/win-spring-boot-starter-captcha/pom.xml
index 943b44bf..1deabd59 100644
--- a/win-framework/win-spring-boot-starter-captcha/pom.xml
+++ b/win-framework/win-spring-boot-starter-captcha/pom.xml
@@ -17,10 +17,12 @@
+
- com.xingyuv
- spring-boot-starter-captcha-plus
+ pro.fessional
+ kaptcha
+
org.springframework.boot
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/config/CaptchaProperties.java b/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/config/CaptchaProperties.java
new file mode 100644
index 00000000..d8f3ed4e
--- /dev/null
+++ b/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/config/CaptchaProperties.java
@@ -0,0 +1,24 @@
+package com.win.framework.captcha.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@ConfigurationProperties(prefix = "win.captcha")
+@Data
+public class CaptchaProperties {
+
+ /**
+ * 验证码的开关
+ */
+ private Boolean enable;
+
+ /**
+ * 验证码类型 math 数组计算 char 字符验证
+ */
+ private String captchaType;
+
+ /**
+ * 验证码有效期
+ */
+ private Integer captchaExpiration;
+}
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/config/WinCaptchaConfiguration.java b/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/config/WinCaptchaConfiguration.java
index c0259b58..cdc01096 100644
--- a/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/config/WinCaptchaConfiguration.java
+++ b/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/config/WinCaptchaConfiguration.java
@@ -1,29 +1,77 @@
package com.win.framework.captcha.config;
-import com.win.framework.captcha.core.service.RedisCaptchaServiceImpl;
-import com.xingyuv.captcha.properties.AjCaptchaProperties;
-import com.xingyuv.captcha.service.CaptchaCacheService;
-import com.xingyuv.captcha.service.impl.CaptchaServiceFactory;
+import com.google.code.kaptcha.impl.DefaultKaptcha;
+import com.google.code.kaptcha.util.Config;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean;
-import org.springframework.data.redis.core.StringRedisTemplate;
-import javax.annotation.Resource;
+import java.util.Properties;
+
+import static com.google.code.kaptcha.Constants.*;
@AutoConfiguration
public class WinCaptchaConfiguration {
-
- @Resource
- private StringRedisTemplate stringRedisTemplate;
-
- @Bean
- public CaptchaCacheService captchaCacheService(AjCaptchaProperties config) {
- // 缓存类型 redis/local/....
- CaptchaCacheService ret = CaptchaServiceFactory.getCache(config.getCacheType().name());
- if (ret instanceof RedisCaptchaServiceImpl) {
- ((RedisCaptchaServiceImpl) ret).setStringRedisTemplate(stringRedisTemplate);
- }
- return ret;
+ @Bean(name = "captchaProducer")
+ public DefaultKaptcha getKaptchaBean() {
+ DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
+ Properties properties = new Properties();
+ // 是否有边框 默认为true 我们可以自己设置yes,no
+ properties.setProperty(KAPTCHA_BORDER, "yes");
+ // 验证码文本字符颜色 默认为Color.BLACK
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black");
+ // 验证码图片宽度 默认为200
+ properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");
+ // 验证码图片高度 默认为50
+ properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");
+ // 验证码文本字符大小 默认为40
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38");
+ // KAPTCHA_SESSION_KEY
+ properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode");
+ // 验证码文本字符长度 默认为5
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
+ // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");
+ // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
+ properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
+ Config config = new Config(properties);
+ defaultKaptcha.setConfig(config);
+ return defaultKaptcha;
}
+ @Bean(name = "captchaProducerMath")
+ public DefaultKaptcha getKaptchaBeanMath() {
+ DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
+ Properties properties = new Properties();
+ // 是否有边框 默认为true 我们可以自己设置yes,no
+ properties.setProperty(KAPTCHA_BORDER, "yes");
+ // 边框颜色 默认为Color.BLACK
+ properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90");
+ // 验证码文本字符颜色 默认为Color.BLACK
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue");
+ // 验证码图片宽度 默认为200
+ properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");
+ // 验证码图片高度 默认为50
+ properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");
+ // 验证码文本字符大小 默认为40
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "35");
+ // KAPTCHA_SESSION_KEY
+ properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath");
+ // 验证码文本生成器
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.win.tms.framework.config.KaptchaTextCreator");
+ // 验证码文本字符间距 默认为2
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3");
+ // 验证码文本字符长度 默认为5
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6");
+ // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");
+ // 验证码噪点颜色 默认为Color.BLACK
+ properties.setProperty(KAPTCHA_NOISE_COLOR, "white");
+ // 干扰实现类
+ properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");
+ // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
+ properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
+ Config config = new Config(properties);
+ defaultKaptcha.setConfig(config);
+ return defaultKaptcha;
+ }
}
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/core/enums/CaptchaRedisKeyConstants.java b/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/core/enums/CaptchaRedisKeyConstants.java
deleted file mode 100644
index 5577db76..00000000
--- a/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/core/enums/CaptchaRedisKeyConstants.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.win.framework.captcha.core.enums;
-
-/**
- * 验证码 Redis Key 枚举类
- *
- * @author 闻荫源码
- */
-public interface CaptchaRedisKeyConstants {
-
- /**
- * 验证码的请求限流
- *
- * KEY 格式:AJ.CAPTCHA.REQ.LIMIT-%s-%s
- * VALUE 数据类型:String // 例如说:验证失败 5 次,get 接口锁定
- * 过期时间:60 秒
- */
- String AJ_CAPTCHA_REQ_LIMIT = "AJ.CAPTCHA.REQ.LIMIT-%s-%s";
-
- /**
- * 验证码的坐标
- *
- * KEY 格式:RUNNING:CAPTCHA:%s // AbstractCaptchaService.REDIS_CAPTCHA_KEY
- * VALUE 数据类型:String // PointVO.class {"secretKey":"PP1w2Frr2KEejD2m","x":162,"y":5}
- * 过期时间:120 秒
- */
- String AJ_CAPTCHA_RUNNING = "RUNNING:CAPTCHA:%s";
-
-}
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/core/service/RedisCaptchaServiceImpl.java b/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/core/service/RedisCaptchaServiceImpl.java
deleted file mode 100644
index 6f3b0ff1..00000000
--- a/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/core/service/RedisCaptchaServiceImpl.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.win.framework.captcha.core.service;
-
-import com.xingyuv.captcha.service.CaptchaCacheService;
-import lombok.AllArgsConstructor;
-import lombok.NoArgsConstructor;
-import org.springframework.data.redis.core.StringRedisTemplate;
-
-import javax.annotation.Resource;
-import java.util.concurrent.TimeUnit;
-
-/**
- * 基于 Redis 实现验证码的存储
- *
- * @author 星语
- */
-@NoArgsConstructor // 保证 aj-captcha 的 SPI 创建
-@AllArgsConstructor
-public class RedisCaptchaServiceImpl implements CaptchaCacheService {
-
- @Resource // 保证 aj-captcha 的 SPI 创建时的注入
- private StringRedisTemplate stringRedisTemplate;
-
- @Override
- public String type() {
- return "redis";
- }
-
- public void setStringRedisTemplate(StringRedisTemplate stringRedisTemplate) {
- this.stringRedisTemplate = stringRedisTemplate;
- }
-
- @Override
- public void set(String key, String value, long expiresInSeconds) {
- stringRedisTemplate.opsForValue().set(key, value, expiresInSeconds, TimeUnit.SECONDS);
- }
-
- @Override
- public boolean exists(String key) {
- return Boolean.TRUE.equals(stringRedisTemplate.hasKey(key));
- }
-
- @Override
- public void delete(String key) {
- stringRedisTemplate.delete(key);
- }
-
- @Override
- public String get(String key) {
- return stringRedisTemplate.opsForValue().get(key);
- }
-
- @Override
- public Long increment(String key, long val) {
- return stringRedisTemplate.opsForValue().increment(key,val);
- }
-
-}
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/enums/CaptchaRedisKeyConstants.java b/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/enums/CaptchaRedisKeyConstants.java
new file mode 100644
index 00000000..507c5e6e
--- /dev/null
+++ b/win-framework/win-spring-boot-starter-captcha/src/main/java/com/win/framework/captcha/enums/CaptchaRedisKeyConstants.java
@@ -0,0 +1,15 @@
+package com.win.framework.captcha.enums;
+
+/**
+ * 验证码 Redis Key 枚举类
+ *
+ * @author 闻荫源码
+ */
+public interface CaptchaRedisKeyConstants {
+
+ /**
+ * 验证码 redis key
+ */
+ String CAPTCHA_CODE_KEY = "captcha_codes:";
+
+}
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/META-INF/services/com.xingyuv.captcha.service.CaptchaCacheService b/win-framework/win-spring-boot-starter-captcha/src/main/resources/META-INF/services/com.xingyuv.captcha.service.CaptchaCacheService
deleted file mode 100644
index 91abb11f..00000000
--- a/win-framework/win-spring-boot-starter-captcha/src/main/resources/META-INF/services/com.xingyuv.captcha.service.CaptchaCacheService
+++ /dev/null
@@ -1 +0,0 @@
-com.win.framework.captcha.core.service.RedisCaptchaServiceImpl
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/win-framework/win-spring-boot-starter-captcha/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 005d8442..36daddcf 100644
--- a/win-framework/win-spring-boot-starter-captcha/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/win-framework/win-spring-boot-starter-captcha/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1 +1,2 @@
+com.win.framework.captcha.config.CaptchaProperties
com.win.framework.captcha.config.WinCaptchaConfiguration
\ No newline at end of file
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg1.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg1.png
deleted file mode 100644
index c4814576..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg1.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg2.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg2.png
deleted file mode 100644
index bf8fb38f..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg2.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg3.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg3.png
deleted file mode 100644
index f871d3d1..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg3.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg4.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg4.png
deleted file mode 100644
index 2e3d8716..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg4.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg5.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg5.png
deleted file mode 100644
index fe383b72..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg5.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg6.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg6.png
deleted file mode 100644
index 5024ceb2..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg6.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg7.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg7.png
deleted file mode 100644
index efe76f8d..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg7.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg8.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg8.png
deleted file mode 100644
index 2727aa32..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg8.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg9.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg9.png
deleted file mode 100644
index 4463aa2f..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg9.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/1.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/1.png
deleted file mode 100644
index ef113247..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/1.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/10.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/10.png
deleted file mode 100644
index 297e44cf..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/10.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/11.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/11.png
deleted file mode 100644
index d9b1da8d..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/11.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/12.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/12.png
deleted file mode 100644
index 07e7313b..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/12.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/13.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/13.png
deleted file mode 100644
index 82c3dd96..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/13.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/14.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/14.png
deleted file mode 100644
index 0b9a8661..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/14.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/15.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/15.png
deleted file mode 100644
index 86b0d1cf..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/15.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/16.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/16.png
deleted file mode 100644
index e90a6e29..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/16.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/17.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/17.png
deleted file mode 100644
index a82cbc7c..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/17.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/18.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/18.png
deleted file mode 100644
index d3f3cfd0..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/18.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/19.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/19.png
deleted file mode 100644
index eb2855bd..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/19.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/8.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/8.png
deleted file mode 100644
index 3cb5ce1c..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/8.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/9.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/9.png
deleted file mode 100644
index 384d3541..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/9.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/2.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/2.png
deleted file mode 100644
index baf3f06d..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/2.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/3.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/3.png
deleted file mode 100644
index ccaf6172..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/3.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/4.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/4.png
deleted file mode 100644
index 7dab1622..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/4.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg1.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg1.png
deleted file mode 100644
index 14e73454..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg1.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg10.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg10.png
deleted file mode 100644
index 1ea1d6d5..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg10.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg2.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg2.png
deleted file mode 100644
index 0edb3293..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg2.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg3.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg3.png
deleted file mode 100644
index 91679960..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg3.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg4.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg4.png
deleted file mode 100644
index e8e8e6c0..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg4.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg5.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg5.png
deleted file mode 100644
index 66a3181e..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg5.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg6.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg6.png
deleted file mode 100644
index 9b0f5d8c..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg6.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg7.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg7.png
deleted file mode 100644
index db41c74a..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg7.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg8.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg8.png
deleted file mode 100644
index 34968130..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg8.png and /dev/null differ
diff --git a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg9.png b/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg9.png
deleted file mode 100644
index 4e7b4775..00000000
Binary files a/win-framework/win-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg9.png and /dev/null differ
diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/util/redis/RedisCache.java b/win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/util/RedisCache.java
similarity index 99%
rename from win-module-system/win-module-system-biz/src/main/java/com/win/module/system/util/redis/RedisCache.java
rename to win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/util/RedisCache.java
index d7105aaf..c4630073 100644
--- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/util/redis/RedisCache.java
+++ b/win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/util/RedisCache.java
@@ -1,4 +1,4 @@
-package com.win.module.system.util.redis;
+package com.win.framework.redis.util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundSetOperations;
diff --git a/win-framework/win-spring-boot-starter-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/win-framework/win-spring-boot-starter-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 28b34586..bdb84a69 100644
--- a/win-framework/win-spring-boot-starter-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/win-framework/win-spring-boot-starter-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,2 +1,3 @@
com.win.framework.redis.config.WinRedisAutoConfiguration
-com.win.framework.redis.config.WinCacheAutoConfiguration
\ No newline at end of file
+com.win.framework.redis.config.WinCacheAutoConfiguration
+com.win.framework.redis.util.RedisCache
\ No newline at end of file
diff --git a/win-module-infra/win-module-infra-biz/pom.xml b/win-module-infra/win-module-infra-biz/pom.xml
index f8d0cd02..25986c03 100644
--- a/win-module-infra/win-module-infra-biz/pom.xml
+++ b/win-module-infra/win-module-infra-biz/pom.xml
@@ -79,7 +79,6 @@
-
com.win
win-spring-boot-starter-excel
diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/ErrorCodeConstants.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/ErrorCodeConstants.java
index 0f440d60..02597519 100644
--- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/ErrorCodeConstants.java
+++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/ErrorCodeConstants.java
@@ -74,6 +74,9 @@ public interface ErrorCodeConstants {
// ========== 通知公告 1-002-008-000 ==========
ErrorCode NOTICE_NOT_FOUND = new ErrorCode(1_002_008_001, "当前通知公告不存在");
+ // ========== 登陆 1-002-009-000 ==========
+ ErrorCode GENERATE_IMAGE_ERROR = new ErrorCode(1_002_008_001, "生成图片错误");
+
// ========== 短信渠道 1-002-011-000 ==========
ErrorCode SMS_CHANNEL_NOT_EXISTS = new ErrorCode(1_002_011_000, "短信渠道不存在");
ErrorCode SMS_CHANNEL_DISABLE = new ErrorCode(1_002_011_001, "短信渠道不处于开启状态,不允许选择");
@@ -114,11 +117,6 @@ public interface ErrorCodeConstants {
ErrorCode ERROR_CODE_NOT_EXISTS = new ErrorCode(1_002_017_000, "错误码不存在");
ErrorCode ERROR_CODE_DUPLICATE = new ErrorCode(1_002_017_001, "已经存在编码为【{}】的错误码");
- // ========== 社交用户 1-002-018-000 ==========
- ErrorCode SOCIAL_USER_AUTH_FAILURE = new ErrorCode(1_002_018_000, "社交授权失败,原因是:{}");
- ErrorCode SOCIAL_USER_UNBIND_NOT_SELF = new ErrorCode(1_002_018_001, "社交解绑失败,非当前用户绑定");
- ErrorCode SOCIAL_USER_NOT_FOUND = new ErrorCode(1_002_018_002, "社交授权失败,找不到对应的用户");
-
// ========== 系统敏感词 1-002-019-000 =========
ErrorCode SENSITIVE_WORD_NOT_EXISTS = new ErrorCode(1_002_019_000, "系统敏感词在所有标签中都不存在");
ErrorCode SENSITIVE_WORD_EXISTS = new ErrorCode(1_002_019_001, "系统敏感词已在标签中存在");
diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/logger/LoginResultEnum.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/logger/LoginResultEnum.java
index 8248e4dc..d237a06a 100644
--- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/logger/LoginResultEnum.java
+++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/logger/LoginResultEnum.java
@@ -13,7 +13,7 @@ public enum LoginResultEnum {
SUCCESS(0), // 成功
BAD_CREDENTIALS(10), // 账号或密码不正确
USER_DISABLED(20), // 用户被禁用
- CAPTCHA_NOT_FOUND(30), // 图片验证码不存在
+ CAPTCHA_EXPIRE(30), // 验证码超期
CAPTCHA_CODE_ERROR(31), // 图片验证码不正确
;
diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthLoginReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthLoginReqVO.java
index 7297e03e..16b0217f 100644
--- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthLoginReqVO.java
+++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/auth/vo/AuthLoginReqVO.java
@@ -28,16 +28,19 @@ public class AuthLoginReqVO {
@Length(min = 4, max = 16, message = "密码长度为 4-16 位")
private String password;
- // ========== 图片验证码相关 ==========
+ // ========== 验证码相关 ==========
- @Schema(description = "验证码,验证码开启时,需要传递", requiredMode = Schema.RequiredMode.REQUIRED,
- example = "PfcH6mgr8tpXuMWFjvW6YVaqrswIuwmWI5dsVZSg7sGpWtDCUbHuDEXl3cFB1+VvCC/rAkSwK8Fad52FSuncVg==")
- @NotEmpty(message = "验证码不能为空", groups = CodeEnableGroup.class)
- private String captchaVerification;
+ /**
+ * 验证码
+ */
+ @Schema(description = "验证码", requiredMode = Schema.RequiredMode.REQUIRED, example = "12")
+ @NotEmpty(message = "验证码不能为空")
+ private String code;
/**
- * 开启验证码的 Group
+ * 唯一标识
*/
- public interface CodeEnableGroup {}
+ @NotEmpty(message = "uuid不能为空")
+ private String uuid;
}
\ No newline at end of file
diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/captcha/CaptchaController.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/captcha/CaptchaController.java
index 4eb5d6f3..ef13c971 100644
--- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/captcha/CaptchaController.java
+++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/captcha/CaptchaController.java
@@ -1,61 +1,83 @@
package com.win.module.system.controller.admin.captcha;
-import cn.hutool.core.util.StrUtil;
-import com.win.framework.common.util.servlet.ServletUtils;
-import com.win.framework.operatelog.core.annotations.OperateLog;
-import com.xingyuv.captcha.model.common.ResponseModel;
-import com.xingyuv.captcha.model.vo.CaptchaVO;
-import com.xingyuv.captcha.service.CaptchaService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.util.IdUtil;
+import com.google.code.kaptcha.Producer;
+import com.win.framework.captcha.config.CaptchaProperties;
+import com.win.framework.captcha.enums.CaptchaRedisKeyConstants;
+import com.win.framework.common.pojo.CommonResult;
+import com.win.framework.redis.util.RedisCache;
+import com.win.module.system.enums.ErrorCodeConstants;
+import org.springframework.util.FastByteArrayOutputStream;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
-import javax.annotation.security.PermitAll;
-import javax.servlet.http.HttpServletRequest;
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import static com.win.framework.common.pojo.CommonResult.error;
+import static com.win.framework.common.pojo.CommonResult.success;
/**
- * 验证码
- *
- * @author 闻荫源码
+ * 验证码操作处理
+ *
+ * @author win
*/
-@Tag(name = "管理后台 - 验证码")
-@RestController("adminCaptchaController")
-@RequestMapping("/system/captcha")
+@RestController
public class CaptchaController {
-
+ @Resource(name = "captchaProducer")
+ private Producer captchaProducer;
@Resource
- private CaptchaService captchaService;
-
- @PostMapping({"/get"})
- @Operation(summary = "获得验证码")
- @PermitAll
- @OperateLog(enable = false) // 避免 Post 请求被记录操作日志
- public ResponseModel get(@RequestBody CaptchaVO data, HttpServletRequest request) {
- assert request.getRemoteHost() != null;
- data.setBrowserInfo(getRemoteId(request));
- return captchaService.get(data);
- }
-
- @PostMapping("/check")
- @Operation(summary = "校验验证码")
- @PermitAll
- @OperateLog(enable = false) // 避免 Post 请求被记录操作日志
- public ResponseModel check(@RequestBody CaptchaVO data, HttpServletRequest request) {
- data.setBrowserInfo(getRemoteId(request));
- return captchaService.check(data);
- }
+ private RedisCache redisCache;
+ @Resource(name = "captchaProducerMath")
+ private Producer captchaProducerMath;
+ @Resource
+ private CaptchaProperties captchaProperties;
- public static String getRemoteId(HttpServletRequest request) {
- String ip = ServletUtils.getClientIP(request);
- String ua = request.getHeader("user-agent");
- if (StrUtil.isNotBlank(ip)) {
- return ip + ua;
+ /**
+ * 生成验证码
+ */
+ @GetMapping("/captchaImage")
+ public CommonResult