diff --git a/pom.xml b/pom.xml index 315b921..28cee11 100644 --- a/pom.xml +++ b/pom.xml @@ -13,11 +13,10 @@ tianai-captcha tianai-captcha-springboot-starter tianai-captcha-solon-plugin - tianai-captcha-springboot4-starter - 1.5.3 + 1.5.3.alpha2 1.8 true diff --git a/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/CacheStoreAutoConfiguration.java b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/CacheStoreAutoConfiguration.java index 3452518..49a03b4 100644 --- a/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/CacheStoreAutoConfiguration.java +++ b/tianai-captcha-springboot-starter/src/main/java/cloud/tianai/captcha/spring/autoconfiguration/CacheStoreAutoConfiguration.java @@ -7,7 +7,6 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; @@ -18,7 +17,8 @@ import org.springframework.data.redis.core.StringRedisTemplate; * * @author Hccake */ -@AutoConfigureAfter({RedisAutoConfiguration.class}) +@AutoConfigureAfter(name = {"org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration", + "org.springframework.boot.data.redis.autoconfigure.DataRedisAutoConfiguration"}) @Configuration(proxyBeanMethods = false) public class CacheStoreAutoConfiguration { diff --git a/tianai-captcha-springboot4-starter/pom.xml b/tianai-captcha-springboot4-starter/pom.xml deleted file mode 100644 index 92e5851..0000000 --- a/tianai-captcha-springboot4-starter/pom.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - 4.0.0 - - cloud.tianai.captcha - tianai-captcha-parent - ${revision} - - - tianai-captcha-springboot4-starter - - - 17 - 17 - UTF-8 - 3.18.0 - - - - - org.springframework.boot - spring-boot-dependencies - 4.0.0 - pom - import - true - - - - - - - org.springframework.boot - spring-boot-autoconfigure - compile - true - - - org.springframework.boot - spring-boot-autoconfigure-processor - true - - - org.springframework.boot - spring-boot-configuration-processor - true - - - org.springframework.boot - spring-boot-starter-data-redis - compile - true - - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - - - com.google.code.gson - gson - - - org.projectlombok - lombok - true - - - cloud.tianai.captcha - tianai-captcha - ${revision} - compile - - - - - - - org.springframework.boot - spring-boot-maven-plugin - 4.0.0 - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - 17 - 17 - -parameters - - - - - \ No newline at end of file diff --git a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/CacheStoreAutoConfiguration.java b/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/CacheStoreAutoConfiguration.java deleted file mode 100644 index 7f1c37f..0000000 --- a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/CacheStoreAutoConfiguration.java +++ /dev/null @@ -1,63 +0,0 @@ -package cloud.tianai.captcha.spring4.autoconfiguration; - -import cloud.tianai.captcha.cache.CacheStore; -import cloud.tianai.captcha.cache.impl.LocalCacheStore; -import cloud.tianai.captcha.spring4.store.impl.RedisCacheStore; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.data.redis.autoconfigure.DataRedisAutoConfiguration; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.annotation.Order; -import org.springframework.data.redis.core.StringRedisTemplate; - -/** - * 缓存存储器的自动配置类 - * - * @author lichenpark - */ -@AutoConfigureAfter({DataRedisAutoConfiguration.class}) -@Configuration(proxyBeanMethods = false) -public class CacheStoreAutoConfiguration { - - /** - * RedisCacheStoreConfiguration - * - * @author 天爱有情 - * @since 2020/10/27 14:06 - */ - @Order(1) - @Configuration(proxyBeanMethods = false) - @ConditionalOnClass(StringRedisTemplate.class) - public static class RedisCacheStoreConfiguration { - - @Bean - @ConditionalOnBean(StringRedisTemplate.class) - @ConditionalOnMissingBean(CacheStore.class) - public CacheStore redis(StringRedisTemplate redisTemplate) { - return new RedisCacheStore(redisTemplate); - } - - } - - /** - * LocalCacheStoreConfiguration - * - * @author 天爱有情 - * @since 2020/10/27 14:06 - */ - @Order(2) - @Configuration(proxyBeanMethods = false) - public static class LocalCacheStoreConfiguration { - - @Bean - @ConditionalOnMissingBean(CacheStore.class) - public CacheStore local() { - return new LocalCacheStore(); - } - - } - -} diff --git a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/ImageCaptchaAutoConfiguration.java b/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/ImageCaptchaAutoConfiguration.java deleted file mode 100644 index 7e0e917..0000000 --- a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/ImageCaptchaAutoConfiguration.java +++ /dev/null @@ -1,131 +0,0 @@ -package cloud.tianai.captcha.spring4.autoconfiguration; - - -import cloud.tianai.captcha.application.ImageCaptchaApplication; -import cloud.tianai.captcha.application.TACBuilder; -import cloud.tianai.captcha.cache.CacheStore; -import cloud.tianai.captcha.common.util.CollectionUtils; -import cloud.tianai.captcha.generator.ImageCaptchaGenerator; -import cloud.tianai.captcha.generator.ImageTransform; -import cloud.tianai.captcha.generator.impl.transform.Base64ImageTransform; -import cloud.tianai.captcha.interceptor.CaptchaInterceptor; -import cloud.tianai.captcha.interceptor.CaptchaInterceptorGroup; -import cloud.tianai.captcha.interceptor.impl.ParamCheckCaptchaInterceptor; -import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; -import cloud.tianai.captcha.resource.ResourceProviders; -import cloud.tianai.captcha.resource.ResourceStore; -import cloud.tianai.captcha.resource.impl.DefaultImageCaptchaResourceManager; -import cloud.tianai.captcha.resource.impl.LocalMemoryResourceStore; -import cloud.tianai.captcha.spring4.plugins.SpringMultiImageCaptchaGenerator; -import cloud.tianai.captcha.spring4.plugins.secondary.SecondaryVerificationApplication; -import cloud.tianai.captcha.validator.ImageCaptchaValidator; -import cloud.tianai.captcha.validator.impl.SimpleImageCaptchaValidator; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Role; -import org.springframework.core.annotation.Order; - -/** - * @Author: 天爱有情 - * @Date 2020/5/29 9:49 - * @Description 滑块验证码自动装配 - */ -@Slf4j -@Order -@Configuration -@AutoConfigureAfter(CacheStoreAutoConfiguration.class) -@EnableConfigurationProperties({SpringImageCaptchaProperties.class}) -public class ImageCaptchaAutoConfiguration { - - @Bean - @ConditionalOnMissingBean - public ResourceStore resourceStore() { - return new LocalMemoryResourceStore(); - } - - @Bean - @ConditionalOnMissingBean - public ImageCaptchaResourceManager imageCaptchaResourceManager(ResourceStore resourceStore) { - ResourceProviders resourceProviders = new ResourceProviders(); - return new DefaultImageCaptchaResourceManager(resourceStore, resourceProviders); - } - - @Bean - @ConditionalOnMissingBean - public ImageTransform imageTransform() { - return new Base64ImageTransform(); - } - - - @Bean - @ConditionalOnMissingBean - public ImageCaptchaGenerator imageCaptchaTemplate(SpringImageCaptchaProperties prop, - ImageCaptchaResourceManager captchaResourceManager, - ImageTransform imageTransform, - BeanFactory beanFactory) { - return new SpringMultiImageCaptchaGenerator(captchaResourceManager, imageTransform, beanFactory); - } - - @Bean - @ConditionalOnMissingBean - public ImageCaptchaValidator imageCaptchaValidator() { - return new SimpleImageCaptchaValidator(); - } - - @Bean - @Role(BeanDefinition.ROLE_INFRASTRUCTURE) - @ConditionalOnMissingBean - public CaptchaInterceptor captchaInterceptor() { - CaptchaInterceptorGroup group = new CaptchaInterceptorGroup(); - group.addInterceptor(new ParamCheckCaptchaInterceptor()); -// group.addInterceptor(new BasicTrackCaptchaInterceptor()); - return group; - } - - - @Bean - @ConditionalOnMissingBean - public ImageCaptchaApplication imageCaptchaApplication(ImageCaptchaGenerator captchaGenerator, - ImageCaptchaValidator imageCaptchaValidator, - CacheStore cacheStore, - ResourceStore resourceStore, - SpringImageCaptchaProperties prop, - CaptchaInterceptor captchaInterceptor, - ApplicationContext applicationContext) { - TACBuilder tacBuilder = TACBuilder.builder(resourceStore) - .setGenerator(captchaGenerator) - .setValidator(imageCaptchaValidator) - .setCacheStore(cacheStore) - .setProp(prop) - .setInterceptor(captchaInterceptor); - - if (prop.getInitDefaultResource()) { - tacBuilder.addDefaultTemplate(prop.getDefaultResourcePrefix()); - } - if (!CollectionUtils.isEmpty(prop.getFontPath())) { - // 读取字体包 - for (String fontPath : prop.getFontPath()) { - int index = fontPath.indexOf(":"); - String[] split = index > 0 ? new String[]{fontPath.substring(0, index), fontPath.substring(index + 1)} : new String[]{"", fontPath}; - String type = split[0]; - String path = split[1]; - tacBuilder.addFont(new cloud.tianai.captcha.resource.common.model.dto.Resource(type, path)); - } - } - ImageCaptchaApplication target = tacBuilder.build(); - if (prop.getSecondary() != null && Boolean.TRUE.equals(prop.getSecondary().getEnabled())) { - // 一个简单的二次验证 - target = new SecondaryVerificationApplication(target, prop.getSecondary()); - } - return target; - } - -} diff --git a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/SecondaryVerificationProperties.java b/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/SecondaryVerificationProperties.java deleted file mode 100644 index df199f2..0000000 --- a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/SecondaryVerificationProperties.java +++ /dev/null @@ -1,12 +0,0 @@ -package cloud.tianai.captcha.spring4.autoconfiguration; - -import lombok.Data; - -@Data -public class SecondaryVerificationProperties { - - private Boolean enabled = false; - private Long expire = 120000L; - private String keyPrefix = "captcha:secondary"; - -} diff --git a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/SpringImageCaptchaProperties.java b/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/SpringImageCaptchaProperties.java deleted file mode 100644 index c568c6c..0000000 --- a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/autoconfiguration/SpringImageCaptchaProperties.java +++ /dev/null @@ -1,32 +0,0 @@ -package cloud.tianai.captcha.spring4.autoconfiguration; - -import cloud.tianai.captcha.application.ImageCaptchaProperties; -import cloud.tianai.captcha.resource.DefaultBuiltInResources; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.context.properties.NestedConfigurationProperty; -import org.springframework.context.annotation.Configuration; - -import java.util.List; - -/** - * @Author: 天爱有情 - * @date 2020/10/19 18:41 - * @Description 滑块验证码属性 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@ConfigurationProperties(prefix = "captcha") -public class SpringImageCaptchaProperties extends ImageCaptchaProperties { - /** 是否初始化默认资源. */ - private Boolean initDefaultResource = false; - /** 默认资源的位置. */ - private String defaultResourcePrefix = DefaultBuiltInResources.PATH_PREFIX; - /** 字体包路径. */ - private List fontPath; - /** 二次验证配置. */ - @NestedConfigurationProperty - private SecondaryVerificationProperties secondary; -} diff --git a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/exception/CaptchaValidException.java b/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/exception/CaptchaValidException.java deleted file mode 100644 index 4b9a11b..0000000 --- a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/exception/CaptchaValidException.java +++ /dev/null @@ -1,41 +0,0 @@ -package cloud.tianai.captcha.spring4.exception; - -import cloud.tianai.captcha.common.exception.ImageCaptchaException; -import lombok.Getter; -import lombok.Setter; - -/** - * @Author: 天爱有情 - * @Date 2020/6/19 16:36 - * @Description 验证码验证失败异常 - */ -@Getter -@Setter -public class CaptchaValidException extends ImageCaptchaException { - - private String captchaType; - private Integer code; - public CaptchaValidException() { - } - - public CaptchaValidException(String captchaType,String message) { - super(message); - this.captchaType = captchaType; - } - public CaptchaValidException(String captchaType,Integer code, String message) { - super(message); - this.code = code; - this.captchaType = captchaType; - } - public CaptchaValidException(String message, Throwable cause) { - super(message, cause); - } - - public CaptchaValidException(Throwable cause) { - super(cause); - } - - public CaptchaValidException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } -} diff --git a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/plugins/SpringMultiImageCaptchaGenerator.java b/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/plugins/SpringMultiImageCaptchaGenerator.java deleted file mode 100644 index c504561..0000000 --- a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/plugins/SpringMultiImageCaptchaGenerator.java +++ /dev/null @@ -1,36 +0,0 @@ -package cloud.tianai.captcha.spring4.plugins; - -import cloud.tianai.captcha.generator.ImageCaptchaGeneratorProvider; -import cloud.tianai.captcha.generator.ImageTransform; -import cloud.tianai.captcha.generator.impl.MultiImageCaptchaGenerator; -import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; -import org.apache.commons.lang3.ArrayUtils; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.ListableBeanFactory; - -/** - * @Author: 天爱有情 - * @date 2022/5/19 14:37 - * @Description 基于spring的 多验证码生成器 - */ -public class SpringMultiImageCaptchaGenerator extends MultiImageCaptchaGenerator { - private ListableBeanFactory beanFactory; - - public SpringMultiImageCaptchaGenerator(ImageCaptchaResourceManager imageCaptchaResourceManager, ImageTransform imageTransform, - BeanFactory beanFactory) { - super(imageCaptchaResourceManager, imageTransform); - this.beanFactory = (ListableBeanFactory) beanFactory; - } - - @Override - protected void doInit() { - super.doInit(); - String[] beanNamesForType = beanFactory.getBeanNamesForType(ImageCaptchaGeneratorProvider.class); - if (!ArrayUtils.isEmpty(beanNamesForType)) { - for (String beanName : beanNamesForType) { - ImageCaptchaGeneratorProvider provider = beanFactory.getBean(beanName, ImageCaptchaGeneratorProvider.class); - addImageCaptchaGeneratorProvider(provider); - } - } - } -} diff --git a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/plugins/secondary/SecondaryVerificationApplication.java b/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/plugins/secondary/SecondaryVerificationApplication.java deleted file mode 100644 index f2e0723..0000000 --- a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/plugins/secondary/SecondaryVerificationApplication.java +++ /dev/null @@ -1,58 +0,0 @@ -package cloud.tianai.captcha.spring4.plugins.secondary; - -import cloud.tianai.captcha.application.FilterImageCaptchaApplication; -import cloud.tianai.captcha.application.ImageCaptchaApplication; -import cloud.tianai.captcha.common.AnyMap; -import cloud.tianai.captcha.common.response.ApiResponse; -import cloud.tianai.captcha.spring4.autoconfiguration.SecondaryVerificationProperties; -import cloud.tianai.captcha.validator.common.model.dto.ImageCaptchaTrack; - -import java.util.Map; -import java.util.concurrent.TimeUnit; - -/** - * @Author: 天爱有情 - * @date 2022/3/2 14:16 - * @Description 二次验证 - */ -public class SecondaryVerificationApplication extends FilterImageCaptchaApplication { - private SecondaryVerificationProperties prop; - - public SecondaryVerificationApplication(ImageCaptchaApplication target, SecondaryVerificationProperties prop) { - super(target); - this.prop = prop; - } - - @Override - public ApiResponse matching(String id, ImageCaptchaTrack imageCaptchaTrack) { - ApiResponse match = super.matching(id, imageCaptchaTrack); - if (match.isSuccess()) { - // 如果匹配成功, 添加二次验证记录 - addSecondaryVerification(id, imageCaptchaTrack); - } - return match; - } - - /** - * 二次缓存验证 - * @param id id - * @return boolean - */ - public boolean secondaryVerification(String id) { - Map cache = target.getCacheStore().getAndRemoveCache(getKey(id)); - return cache != null; - } - - /** - * 添加二次缓存验证记录 - * @param id id - * @param imageCaptchaTrack sliderCaptchaTrack - */ - protected void addSecondaryVerification(String id, ImageCaptchaTrack imageCaptchaTrack) { - target.getCacheStore().setCache(getKey(id), new AnyMap(), prop.getExpire(), TimeUnit.MILLISECONDS); - } - - protected String getKey(String id) { - return prop.getKeyPrefix().concat(":").concat(id); - } -} diff --git a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/store/impl/RedisCacheStore.java b/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/store/impl/RedisCacheStore.java deleted file mode 100644 index 3f42c4b..0000000 --- a/tianai-captcha-springboot4-starter/src/main/java/cloud/tianai/captcha/spring4/store/impl/RedisCacheStore.java +++ /dev/null @@ -1,71 +0,0 @@ -package cloud.tianai.captcha.spring4.store.impl; - -import cloud.tianai.captcha.cache.CacheStore; -import cloud.tianai.captcha.common.AnyMap; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.data.redis.core.script.DefaultRedisScript; -import org.springframework.data.redis.core.script.RedisScript; -import org.springframework.util.StringUtils; - -import java.util.Collections; -import java.util.concurrent.TimeUnit; - -/** - * @Author: 天爱有情 - * @date 2022/3/2 14:42 - * @Description redis实现的缓存 - */ -public class RedisCacheStore implements CacheStore { - - private static final RedisScript SCRIPT_GET_CACHE = new DefaultRedisScript<>("local res = redis.call('get',KEYS[1]) if res == nil then return nil else redis.call('del',KEYS[1]) return res end", String.class); - protected StringRedisTemplate redisTemplate; - private Gson gson = new Gson(); - - public RedisCacheStore(StringRedisTemplate redisTemplate) { - this.redisTemplate = redisTemplate; - } - - @Override - public AnyMap getCache(String key) { - String jsonData = redisTemplate.opsForValue().get(key); - if (StringUtils.isEmpty(jsonData)) { - return null; - } - return gson.fromJson(jsonData, new TypeToken() { - }.getType()); - } - - @Override - public AnyMap getAndRemoveCache(String key) { - String json = redisTemplate.execute(SCRIPT_GET_CACHE, Collections.singletonList(key)); - if (org.apache.commons.lang3.StringUtils.isBlank(json)) { - return null; - } - return gson.fromJson(json, new TypeToken() { - }.getType()); - } - - @Override - public boolean setCache(String key, AnyMap data, Long expire, TimeUnit timeUnit) { - redisTemplate.opsForValue().set(key, gson.toJson(data), expire, timeUnit); - return true; - } - - @Override - public Long incr(String key, long delta, Long expire, TimeUnit timeUnit) { - Long increment = redisTemplate.opsForValue().increment(key, delta); - redisTemplate.expire(key, expire, timeUnit); - return increment; - } - - @Override - public Long getLong(String key) { - String value = redisTemplate.opsForValue().get(key); - if (value == null) { - return null; - } - return Long.valueOf(value); - } -} diff --git a/tianai-captcha-springboot4-starter/src/main/resources/META-INF/spring.factories b/tianai-captcha-springboot4-starter/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 2279330..0000000 --- a/tianai-captcha-springboot4-starter/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,3 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - cloud.tianai.captcha.spring4.autoconfiguration.CacheStoreAutoConfiguration,\ - cloud.tianai.captcha.spring4.autoconfiguration.ImageCaptchaAutoConfiguration \ No newline at end of file diff --git a/tianai-captcha-springboot4-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/tianai-captcha-springboot4-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index fb1e5de..0000000 --- a/tianai-captcha-springboot4-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,2 +0,0 @@ -cloud.tianai.captcha.spring4.autoconfiguration.CacheStoreAutoConfiguration -cloud.tianai.captcha.spring4.autoconfiguration.ImageCaptchaAutoConfiguration diff --git a/tianai-captcha/src/test/java/example/readme/ApplicationTest.java b/tianai-captcha/src/test/java/example/readme/ApplicationTest.java index 0cd565b..f6d313a 100644 --- a/tianai-captcha/src/test/java/example/readme/ApplicationTest.java +++ b/tianai-captcha/src/test/java/example/readme/ApplicationTest.java @@ -5,6 +5,7 @@ import cloud.tianai.captcha.application.ImageCaptchaApplication; import cloud.tianai.captcha.application.ImageCaptchaProperties; import cloud.tianai.captcha.application.vo.ImageCaptchaVO; import cloud.tianai.captcha.cache.CacheStore; +import cloud.tianai.captcha.cache.StoreCacheKeyPrefix; import cloud.tianai.captcha.cache.impl.LocalCacheStore; import cloud.tianai.captcha.common.AnyMap; import cloud.tianai.captcha.common.response.ApiResponse; @@ -65,7 +66,7 @@ public class ApplicationTest { ImageCaptchaProperties prop = new ImageCaptchaProperties(); // application 验证码封装, prop为所需的一些扩展参数 - ImageCaptchaApplication application = new DefaultImageCaptchaApplication(generator, imageCaptchaValidator, cacheStore, prop, group); + ImageCaptchaApplication application = new DefaultImageCaptchaApplication(generator, imageCaptchaValidator, cacheStore, prop, group, null); return application; } }