重构系统项目结构, 将 tianai-captcha
tianai-captcha-springboot-starter tianai-captcha-web-sdk tianai-captcha-solon-plugin 整合到一块
This commit is contained in:
+36
@@ -0,0 +1,36 @@
|
||||
package cloud.tianai.captcha.spring.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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package cloud.tianai.captcha.spring.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.spring.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<String, Object> 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user