diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java index 525101f65..f46f03b7f 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java @@ -15,10 +15,7 @@ import org.dromara.common.core.utils.regex.RegexValidator; import org.dromara.common.mail.config.properties.MailProperties; import org.dromara.common.redis.annotation.RateLimiter; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 验证码操作处理 @@ -92,12 +89,11 @@ public class CaptchaController { * 校验【行为滑块验证码】 * POST语义更合适,提交校验参数 * - * @param captchaKey 验证码缓存key - * @param slideX 用户滑动偏移x坐标 + * @param data 验证码缓存key * @return 校验结果 */ @PostMapping("/behavior/verify") - public ApiResponse verifyBehaviorCaptcha(behaviorData data) { + public ApiResponse verifyBehaviorCaptcha(@RequestBody behaviorData data) { return captchaUtils.verifyBehaviorCaptchaFirstStage(data.id(), data.data()); } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index e2242ea78..454cf758b 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -49,7 +49,7 @@ captcha: local-cache-ignored-cache-fields: "" # 配置字体包,供文字点选验证码使用,可以配置多个,不配置使用默认的字体 font-path: - - classpath:font/SimHei.ttf + - classpath:font/AaKuangPaiShouShu-2.ttf secondary: # 二次验证, 默认false 不开启 enabled: true diff --git a/ruoyi-admin/src/main/resources/font/AaKuangPaiShouShu-2.ttf b/ruoyi-admin/src/main/resources/font/AaKuangPaiShouShu-2.ttf new file mode 100644 index 000000000..7122b1db3 Binary files /dev/null and b/ruoyi-admin/src/main/resources/font/AaKuangPaiShouShu-2.ttf differ diff --git a/ruoyi-common/ruoyi-common-captcha/src/main/java/org/dromara/common/captcha/config/CaptchaConfig.java b/ruoyi-common/ruoyi-common-captcha/src/main/java/org/dromara/common/captcha/config/CaptchaConfig.java index e3efd3800..e55c29246 100644 --- a/ruoyi-common/ruoyi-common-captcha/src/main/java/org/dromara/common/captcha/config/CaptchaConfig.java +++ b/ruoyi-common/ruoyi-common-captcha/src/main/java/org/dromara/common/captcha/config/CaptchaConfig.java @@ -38,7 +38,7 @@ public class CaptchaConfig { resourceStore.addResource(CaptchaTypeConstant.SLIDER, new Resource("classpath", "bgimages/j.jpg", "default")); resourceStore.addResource(CaptchaTypeConstant.ROTATE, new Resource("classpath", "bgimages/48.jpg", "default")); resourceStore.addResource(CaptchaTypeConstant.CONCAT, new Resource("classpath", "bgimages/48.jpg", "default")); -// resourceStore.addResource(CaptchaTypeConstant.WORD_IMAGE_CLICK, new Resource("classpath", "bgimages/c.jpg", "default")); + resourceStore.addResource(CaptchaTypeConstant.WORD_IMAGE_CLICK, new Resource("classpath", "bgimages/c.jpg", "default")); return resourceStore; } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enums/EnumPatternValidator.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enums/EnumPatternValidator.java index 14f15a245..6f0754ca2 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enums/EnumPatternValidator.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enums/EnumPatternValidator.java @@ -1,5 +1,7 @@ package org.dromara.common.core.validate.enums; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.BooleanUtil; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; import org.dromara.common.core.utils.StringUtils; @@ -14,12 +16,17 @@ import java.util.Set; * @author 秋辞未寒 * @date 2024-12-09 */ -public class EnumPatternValidator implements ConstraintValidator { +public class EnumPatternValidator implements ConstraintValidator { /** * 枚举允许值集合。 */ - private final Set values = new HashSet<>(); + private final Set values = new HashSet<>(); + + /** + * 枚举字段值类型。 + */ + private Class valueType; /** * 初始化枚举允许值集合。 @@ -36,24 +43,43 @@ public class EnumPatternValidator implements ConstraintValidator以枚举字段的实际类型转换输入值后进行比较,可兼容字符串、数字、布尔值等字段类型, + * 同时避免将无法转换的值视为合法值。字符串类型的空白值按未填写处理,其他类型仅 null + * 按未填写处理。

* * @param value 待校验值 * @param constraintValidatorContext 校验上下文 * @return true 校验通过 false 校验失败 */ @Override - public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { - if (StringUtils.isBlank(value)) { + public boolean isValid(Object value, ConstraintValidatorContext constraintValidatorContext) { + if (value == null) { return true; } - return values.contains(value); + if (valueType == null) { + return false; + } + if (value instanceof CharSequence && StringUtils.isBlank(value.toString()) + && CharSequence.class.isAssignableFrom(valueType)) { + return true; + } + if ((valueType == Boolean.class || valueType == boolean.class) && value instanceof CharSequence + && BooleanUtil.toBooleanObject(value.toString()) == null) { + return false; + } + Object convertedValue = Convert.convertWithCheck(valueType, value, null, true); + return convertedValue != null && values.contains(convertedValue); } }