Commit c60f8d6da293fadf36ffd7fd0ddbb0793beca99b
1 parent
61a34dda
feat: 支持 vo 返回的脱敏
Showing
28 changed files
with
365 additions
and
143 deletions
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/handler/DesensitizationHandlerHolder.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerHolder.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.handler; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.base; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.ReflectUtil; | 3 | import cn.hutool.core.util.ReflectUtil; |
| 4 | +import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler; | ||
| 5 | +import cn.iocoder.yudao.framework.desensitize.core.regex.handler.DefaultRegexDesensitizationHandler; | ||
| 6 | +import cn.iocoder.yudao.framework.desensitize.core.slider.handler.DefaultDesensitizationHandler; | ||
| 4 | 7 | ||
| 5 | import java.util.Map; | 8 | import java.util.Map; |
| 6 | import java.util.concurrent.ConcurrentHashMap; | 9 | import java.util.concurrent.ConcurrentHashMap; |
| @@ -13,8 +16,8 @@ public class DesensitizationHandlerHolder { | @@ -13,8 +16,8 @@ public class DesensitizationHandlerHolder { | ||
| 13 | * handler 缓存,默认初始化内置的处理器 | 16 | * handler 缓存,默认初始化内置的处理器 |
| 14 | */ | 17 | */ |
| 15 | private static final Map<Class<? extends DesensitizationHandler>, DesensitizationHandler> HANDLER_MAP = new ConcurrentHashMap<>() {{ | 18 | private static final Map<Class<? extends DesensitizationHandler>, DesensitizationHandler> HANDLER_MAP = new ConcurrentHashMap<>() {{ |
| 16 | - put(RegexDesensitizationHandler.class, new RegexDesensitizationHandler()); | ||
| 17 | - put(SliderDesensitizationHandler.class, new SliderDesensitizationHandler()); | 19 | + put(DefaultRegexDesensitizationHandler.class, new DefaultRegexDesensitizationHandler()); |
| 20 | + put(DefaultDesensitizationHandler.class, new DefaultDesensitizationHandler()); | ||
| 18 | }}; | 21 | }}; |
| 19 | 22 | ||
| 20 | public static DesensitizationHandler getDesensitizationHandler(Class<? extends DesensitizationHandler> clazz) { | 23 | public static DesensitizationHandler getDesensitizationHandler(Class<? extends DesensitizationHandler> clazz) { |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/annotation/Desensitize.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/Desensitize.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.annotation; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.base.annotation; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.handler.DesensitizationHandler; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler; |
| 4 | import cn.iocoder.yudao.framework.desensitize.serializer.StringDesensitizeSerializer; | 4 | import cn.iocoder.yudao.framework.desensitize.serializer.StringDesensitizeSerializer; |
| 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; |
| 6 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; | 6 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
| @@ -16,7 +16,7 @@ import java.lang.annotation.Target; | @@ -16,7 +16,7 @@ import java.lang.annotation.Target; | ||
| 16 | * Desensitize 顶级脱敏注解 | 16 | * Desensitize 顶级脱敏注解 |
| 17 | */ | 17 | */ |
| 18 | @Documented | 18 | @Documented |
| 19 | -@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) | 19 | +@Target({ ElementType.ANNOTATION_TYPE}) |
| 20 | @Retention(RetentionPolicy.RUNTIME) | 20 | @Retention(RetentionPolicy.RUNTIME) |
| 21 | @JacksonAnnotationsInside | 21 | @JacksonAnnotationsInside |
| 22 | @JsonSerialize(using = StringDesensitizeSerializer.class) | 22 | @JsonSerialize(using = StringDesensitizeSerializer.class) |
| @@ -25,6 +25,5 @@ public @interface Desensitize { | @@ -25,6 +25,5 @@ public @interface Desensitize { | ||
| 25 | /** | 25 | /** |
| 26 | * 脱敏处理器 | 26 | * 脱敏处理器 |
| 27 | */ | 27 | */ |
| 28 | - Class<? extends DesensitizationHandler> desensitizationHandler(); | ||
| 29 | - | 28 | + Class<? extends DesensitizationHandler> desensitizationBy(); |
| 30 | } | 29 | } |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/handler/DesensitizationHandler.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.handler; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.base.handler; |
| 2 | 2 | ||
| 3 | import java.lang.annotation.Annotation; | 3 | import java.lang.annotation.Annotation; |
| 4 | 4 | ||
| @@ -11,18 +11,9 @@ public interface DesensitizationHandler<T extends Annotation> { | @@ -11,18 +11,9 @@ public interface DesensitizationHandler<T extends Annotation> { | ||
| 11 | * 脱敏 | 11 | * 脱敏 |
| 12 | * | 12 | * |
| 13 | * @param origin 原始字符串 | 13 | * @param origin 原始字符串 |
| 14 | - * @param arg 参数 | 14 | + * @param anno 注解信息 |
| 15 | * @return 脱敏后的字符串 | 15 | * @return 脱敏后的字符串 |
| 16 | */ | 16 | */ |
| 17 | - String desensitize(String origin, Object... arg); | 17 | + String desensitize(String origin, T anno); |
| 18 | 18 | ||
| 19 | - /** | ||
| 20 | - * 获取注解参数 | ||
| 21 | - * | ||
| 22 | - * @param anno 注解 | ||
| 23 | - * @return 注解参数 | ||
| 24 | - */ | ||
| 25 | - default Object[] getAnnotationArgs(T anno) { | ||
| 26 | - return new Object[0]; | ||
| 27 | - } | ||
| 28 | } | 19 | } |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/annotation/constraints/EmailDesensitize.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/EmailDesensitize.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.annotation.constraints; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.regex.annotation; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.annotation.RegexDesensitize; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize; |
| 4 | +import cn.iocoder.yudao.framework.desensitize.core.regex.handler.EmailDesensitizationHandler; | ||
| 4 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; |
| 5 | 6 | ||
| 6 | import java.lang.annotation.Documented; | 7 | import java.lang.annotation.Documented; |
| @@ -16,6 +17,18 @@ import java.lang.annotation.Target; | @@ -16,6 +17,18 @@ import java.lang.annotation.Target; | ||
| 16 | @Target({ElementType.FIELD}) | 17 | @Target({ElementType.FIELD}) |
| 17 | @Retention(RetentionPolicy.RUNTIME) | 18 | @Retention(RetentionPolicy.RUNTIME) |
| 18 | @JacksonAnnotationsInside | 19 | @JacksonAnnotationsInside |
| 19 | -@RegexDesensitize(regex = "(^.)[^@]*(@.*$)", replacer ="$1****$2") // 邮箱;比如:example@gmail.com脱敏之后为e****@gmail.com | 20 | +@Desensitize(desensitizationBy = EmailDesensitizationHandler.class) // 邮箱;比如:example@gmail.com脱敏之后为e****@gmail.com |
| 20 | public @interface EmailDesensitize { | 21 | public @interface EmailDesensitize { |
| 22 | + /** | ||
| 23 | + * 匹配的正则表达式(默认匹配所有) | ||
| 24 | + */ | ||
| 25 | + String regex() default "(^.)[^@]*(@.*$)"; | ||
| 26 | + | ||
| 27 | + /** | ||
| 28 | + * 替换规则,会将匹配到的字符串全部替换成 replacer | ||
| 29 | + * 例如:regex=123; replacer=****** | ||
| 30 | + * 原始字符串 123456789 | ||
| 31 | + * 脱敏后字符串 ******456789 | ||
| 32 | + */ | ||
| 33 | + String replacer() default "$1****$2"; | ||
| 21 | } | 34 | } |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/annotation/RegexDesensitize.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/RegexDesensitize.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.annotation; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.regex.annotation; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.handler.RegexDesensitizationHandler; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize; |
| 4 | +import cn.iocoder.yudao.framework.desensitize.core.regex.handler.DefaultRegexDesensitizationHandler; | ||
| 4 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; |
| 5 | 6 | ||
| 6 | import java.lang.annotation.Documented; | 7 | import java.lang.annotation.Documented; |
| @@ -16,7 +17,7 @@ import java.lang.annotation.Target; | @@ -16,7 +17,7 @@ import java.lang.annotation.Target; | ||
| 16 | @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) | 17 | @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) |
| 17 | @Retention(RetentionPolicy.RUNTIME) | 18 | @Retention(RetentionPolicy.RUNTIME) |
| 18 | @JacksonAnnotationsInside | 19 | @JacksonAnnotationsInside |
| 19 | -@Desensitize(desensitizationHandler = RegexDesensitizationHandler.class) | 20 | +@Desensitize(desensitizationBy = DefaultRegexDesensitizationHandler.class) |
| 20 | public @interface RegexDesensitize { | 21 | public @interface RegexDesensitize { |
| 21 | /** | 22 | /** |
| 22 | * 匹配的正则表达式(默认匹配所有) | 23 | * 匹配的正则表达式(默认匹配所有) |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.desensitize.core.regex.handler; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler; | ||
| 4 | + | ||
| 5 | +import java.lang.annotation.Annotation; | ||
| 6 | + | ||
| 7 | +public abstract class AbstractRegexDesensitizationHandler<T extends Annotation> implements DesensitizationHandler<T> { | ||
| 8 | + | ||
| 9 | + @Override | ||
| 10 | + public String desensitize(String origin, T anno) { | ||
| 11 | + Object[] args = getArgs(anno); | ||
| 12 | + String regex = (String) args[0]; | ||
| 13 | + String replacer = (String) args[1]; | ||
| 14 | + | ||
| 15 | + return origin.replaceAll(regex, replacer); | ||
| 16 | + } | ||
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * 获取注解的参数 | ||
| 20 | + * | ||
| 21 | + * @param anno 注解信息 | ||
| 22 | + * @return 注解的参数 | ||
| 23 | + */ | ||
| 24 | + abstract Object[] getArgs(T anno); | ||
| 25 | +} |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.desensitize.core.regex.handler; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.RegexDesensitize; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * 正则脱敏处理器 | ||
| 7 | + */ | ||
| 8 | +public class DefaultRegexDesensitizationHandler extends AbstractRegexDesensitizationHandler<RegexDesensitize> { | ||
| 9 | + | ||
| 10 | + @Override | ||
| 11 | + Object[] getArgs(RegexDesensitize anno) { | ||
| 12 | + return new Object[]{anno.regex(), anno.replacer()}; | ||
| 13 | + } | ||
| 14 | +} |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.desensitize.core.regex.handler; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.EmailDesensitize; | ||
| 4 | + | ||
| 5 | +public class EmailDesensitizationHandler extends AbstractRegexDesensitizationHandler<EmailDesensitize> { | ||
| 6 | + | ||
| 7 | + @Override | ||
| 8 | + Object[] getArgs(EmailDesensitize anno) { | ||
| 9 | + return new Object[]{anno.regex(), anno.replacer()}; | ||
| 10 | + } | ||
| 11 | +} |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/annotation/constraints/BankCardDesensitize.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/BankCard.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.annotation.constraints; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.annotation; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.annotation.SliderDesensitize; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize; |
| 4 | +import cn.iocoder.yudao.framework.desensitize.core.slider.handler.BankCardDesensitization; | ||
| 4 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; |
| 5 | 6 | ||
| 6 | import java.lang.annotation.Documented; | 7 | import java.lang.annotation.Documented; |
| @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | ||
| 16 | @Target({ElementType.FIELD}) | 17 | @Target({ElementType.FIELD}) |
| 17 | @Retention(RetentionPolicy.RUNTIME) | 18 | @Retention(RetentionPolicy.RUNTIME) |
| 18 | @JacksonAnnotationsInside | 19 | @JacksonAnnotationsInside |
| 19 | -@SliderDesensitize(prefixKeep = 6, suffixKeep = 2, replacer = "*") // 银行卡号;比如:9988002866797031脱敏之后为998800********31 | ||
| 20 | -public @interface BankCardDesensitize { | 20 | +@Desensitize(desensitizationBy = BankCardDesensitization.class)// 银行卡号;比如:9988002866797031脱敏之后为998800********31 |
| 21 | +public @interface BankCard { | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 前缀保留长度 | ||
| 25 | + */ | ||
| 26 | + int prefixKeep() default 6; | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 后缀保留长度 | ||
| 30 | + */ | ||
| 31 | + int suffixKeep() default 2; | ||
| 32 | + | ||
| 33 | + /** | ||
| 34 | + * 替换规则,会将前缀后缀保留后,全部替换成 replacer | ||
| 35 | + * 例如:prefixKeep = 1; suffixKeep = 2; replacer = "*"; | ||
| 36 | + * 原始字符串 123456 | ||
| 37 | + * 脱敏后 1***56 | ||
| 38 | + */ | ||
| 39 | + String replacer() default "*"; | ||
| 40 | + | ||
| 21 | } | 41 | } |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/annotation/constraints/CarLicenseDesensitize.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/CarLicense.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.annotation.constraints; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.annotation; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.annotation.SliderDesensitize; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize; |
| 4 | +import cn.iocoder.yudao.framework.desensitize.core.slider.handler.CarLicenseDesensitization; | ||
| 4 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; |
| 5 | 6 | ||
| 6 | import java.lang.annotation.Documented; | 7 | import java.lang.annotation.Documented; |
| @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | ||
| 16 | @Target({ElementType.FIELD}) | 17 | @Target({ElementType.FIELD}) |
| 17 | @Retention(RetentionPolicy.RUNTIME) | 18 | @Retention(RetentionPolicy.RUNTIME) |
| 18 | @JacksonAnnotationsInside | 19 | @JacksonAnnotationsInside |
| 19 | -@SliderDesensitize(prefixKeep = 3, suffixKeep = 1, replacer = "*") // 车牌号;比如:粤A66666脱敏之后为粤A6***6 | ||
| 20 | -public @interface CarLicenseDesensitize { | 20 | +@Desensitize(desensitizationBy = CarLicenseDesensitization.class) // 车牌号;比如:粤A66666脱敏之后为粤A6***6 |
| 21 | +public @interface CarLicense { | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 前缀保留长度 | ||
| 25 | + */ | ||
| 26 | + int prefixKeep() default 3; | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 后缀保留长度 | ||
| 30 | + */ | ||
| 31 | + int suffixKeep() default 1; | ||
| 32 | + | ||
| 33 | + /** | ||
| 34 | + * 替换规则,会将前缀后缀保留后,全部替换成 replacer | ||
| 35 | + * 例如:prefixKeep = 1; suffixKeep = 2; replacer = "*"; | ||
| 36 | + * 原始字符串 123456 | ||
| 37 | + * 脱敏后 1***56 | ||
| 38 | + */ | ||
| 39 | + String replacer() default "*"; | ||
| 40 | + | ||
| 21 | } | 41 | } |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/annotation/constraints/ChineseNameDesensitize.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/ChineseName.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.annotation.constraints; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.annotation; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.annotation.SliderDesensitize; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize; |
| 4 | +import cn.iocoder.yudao.framework.desensitize.core.slider.handler.ChineseNameDesensitization; | ||
| 4 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; |
| 5 | 6 | ||
| 6 | import java.lang.annotation.Documented; | 7 | import java.lang.annotation.Documented; |
| @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | ||
| 16 | @Target({ElementType.FIELD}) | 17 | @Target({ElementType.FIELD}) |
| 17 | @Retention(RetentionPolicy.RUNTIME) | 18 | @Retention(RetentionPolicy.RUNTIME) |
| 18 | @JacksonAnnotationsInside | 19 | @JacksonAnnotationsInside |
| 19 | -@SliderDesensitize(prefixKeep = 1, suffixKeep = 0, replacer = "*") // 中文名;比如:刘子豪脱敏之后为刘** | ||
| 20 | -public @interface ChineseNameDesensitize { | 20 | +@Desensitize(desensitizationBy = ChineseNameDesensitization.class) // 中文名;比如:刘子豪脱敏之后为刘** |
| 21 | +public @interface ChineseName { | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 前缀保留长度 | ||
| 25 | + */ | ||
| 26 | + int prefixKeep() default 1; | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 后缀保留长度 | ||
| 30 | + */ | ||
| 31 | + int suffixKeep() default 0; | ||
| 32 | + | ||
| 33 | + /** | ||
| 34 | + * 替换规则,会将前缀后缀保留后,全部替换成 replacer | ||
| 35 | + * 例如:prefixKeep = 1; suffixKeep = 2; replacer = "*"; | ||
| 36 | + * 原始字符串 123456 | ||
| 37 | + * 脱敏后 1***56 | ||
| 38 | + */ | ||
| 39 | + String replacer() default "*"; | ||
| 40 | + | ||
| 21 | } | 41 | } |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/annotation/constraints/FixedPhoneDesensitize.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/FixedPhone.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.annotation.constraints; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.annotation; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.annotation.SliderDesensitize; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize; |
| 4 | +import cn.iocoder.yudao.framework.desensitize.core.slider.handler.FixedPhoneDesensitization; | ||
| 4 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; |
| 5 | 6 | ||
| 6 | import java.lang.annotation.Documented; | 7 | import java.lang.annotation.Documented; |
| @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | ||
| 16 | @Target({ElementType.FIELD}) | 17 | @Target({ElementType.FIELD}) |
| 17 | @Retention(RetentionPolicy.RUNTIME) | 18 | @Retention(RetentionPolicy.RUNTIME) |
| 18 | @JacksonAnnotationsInside | 19 | @JacksonAnnotationsInside |
| 19 | -@SliderDesensitize(prefixKeep = 4, suffixKeep = 2, replacer = "*") // 固定电话;比如:01086551122脱敏之后为0108*****22 | ||
| 20 | -public @interface FixedPhoneDesensitize { | 20 | +@Desensitize(desensitizationBy = FixedPhoneDesensitization.class) // 固定电话;比如:01086551122脱敏之后为0108*****22 |
| 21 | +public @interface FixedPhone { | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 前缀保留长度 | ||
| 25 | + */ | ||
| 26 | + int prefixKeep() default 4; | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 后缀保留长度 | ||
| 30 | + */ | ||
| 31 | + int suffixKeep() default 2; | ||
| 32 | + | ||
| 33 | + /** | ||
| 34 | + * 替换规则,会将前缀后缀保留后,全部替换成 replacer | ||
| 35 | + * 例如:prefixKeep = 1; suffixKeep = 2; replacer = "*"; | ||
| 36 | + * 原始字符串 123456 | ||
| 37 | + * 脱敏后 1***56 | ||
| 38 | + */ | ||
| 39 | + String replacer() default "*"; | ||
| 40 | + | ||
| 21 | } | 41 | } |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/annotation/constraints/IdCardDesensitize.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/IdCard.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.annotation.constraints; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.annotation; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.annotation.SliderDesensitize; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize; |
| 4 | +import cn.iocoder.yudao.framework.desensitize.core.slider.handler.IdCardDesensitization; | ||
| 4 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; |
| 5 | 6 | ||
| 6 | import java.lang.annotation.Documented; | 7 | import java.lang.annotation.Documented; |
| @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | ||
| 16 | @Target({ElementType.FIELD}) | 17 | @Target({ElementType.FIELD}) |
| 17 | @Retention(RetentionPolicy.RUNTIME) | 18 | @Retention(RetentionPolicy.RUNTIME) |
| 18 | @JacksonAnnotationsInside | 19 | @JacksonAnnotationsInside |
| 19 | -@SliderDesensitize(prefixKeep = 6, suffixKeep = 2, replacer = "*") // 身份证号码;比如:530321199204074611脱敏之后为530321**********11 | ||
| 20 | -public @interface IdCardDesensitize { | 20 | +@Desensitize(desensitizationBy = IdCardDesensitization.class) // 身份证号码;比如:530321199204074611脱敏之后为530321**********11 |
| 21 | +public @interface IdCard { | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 前缀保留长度 | ||
| 25 | + */ | ||
| 26 | + int prefixKeep() default 6; | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 后缀保留长度 | ||
| 30 | + */ | ||
| 31 | + int suffixKeep() default 2; | ||
| 32 | + | ||
| 33 | + /** | ||
| 34 | + * 替换规则,会将前缀后缀保留后,全部替换成 replacer | ||
| 35 | + * 例如:prefixKeep = 1; suffixKeep = 2; replacer = "*"; | ||
| 36 | + * 原始字符串 123456 | ||
| 37 | + * 脱敏后 1***56 | ||
| 38 | + */ | ||
| 39 | + String replacer() default "*"; | ||
| 40 | + | ||
| 21 | } | 41 | } |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/annotation/constraints/PasswordDesensitize.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Password.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.annotation.constraints; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.annotation; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.annotation.SliderDesensitize; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize; |
| 4 | +import cn.iocoder.yudao.framework.desensitize.core.slider.handler.PasswordDesensitization; | ||
| 4 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; |
| 5 | 6 | ||
| 6 | import java.lang.annotation.Documented; | 7 | import java.lang.annotation.Documented; |
| @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | ||
| 16 | @Target({ElementType.FIELD}) | 17 | @Target({ElementType.FIELD}) |
| 17 | @Retention(RetentionPolicy.RUNTIME) | 18 | @Retention(RetentionPolicy.RUNTIME) |
| 18 | @JacksonAnnotationsInside | 19 | @JacksonAnnotationsInside |
| 19 | -@SliderDesensitize(prefixKeep = 0, suffixKeep = 0, replacer = "*") // 密码;比如:123456脱敏之后为****** | ||
| 20 | -public @interface PasswordDesensitize { | 20 | +@Desensitize(desensitizationBy = PasswordDesensitization.class) // 密码;比如:123456脱敏之后为****** |
| 21 | +public @interface Password { | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 前缀保留长度 | ||
| 25 | + */ | ||
| 26 | + int prefixKeep() default 0; | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 后缀保留长度 | ||
| 30 | + */ | ||
| 31 | + int suffixKeep() default 0; | ||
| 32 | + | ||
| 33 | + /** | ||
| 34 | + * 替换规则,会将前缀后缀保留后,全部替换成 replacer | ||
| 35 | + * 例如:prefixKeep = 1; suffixKeep = 2; replacer = "*"; | ||
| 36 | + * 原始字符串 123456 | ||
| 37 | + * 脱敏后 1***56 | ||
| 38 | + */ | ||
| 39 | + String replacer() default "*"; | ||
| 40 | + | ||
| 21 | } | 41 | } |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/annotation/constraints/PhoneNumberDesensitize.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/PhoneNumber.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.annotation.constraints; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.annotation; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.annotation.SliderDesensitize; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize; |
| 4 | +import cn.iocoder.yudao.framework.desensitize.core.slider.handler.PhoneNumberDesensitization; | ||
| 4 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; |
| 5 | 6 | ||
| 6 | import java.lang.annotation.Documented; | 7 | import java.lang.annotation.Documented; |
| @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | @@ -16,6 +17,25 @@ import java.lang.annotation.Target; | ||
| 16 | @Target({ElementType.FIELD}) | 17 | @Target({ElementType.FIELD}) |
| 17 | @Retention(RetentionPolicy.RUNTIME) | 18 | @Retention(RetentionPolicy.RUNTIME) |
| 18 | @JacksonAnnotationsInside | 19 | @JacksonAnnotationsInside |
| 19 | -@SliderDesensitize(prefixKeep = 3, suffixKeep = 4, replacer = "*") // 手机号;比如:13248765917脱敏之后为132****5917 | ||
| 20 | -public @interface PhoneNumberDesensitize { | 20 | +@Desensitize(desensitizationBy = PhoneNumberDesensitization.class) // 手机号;比如:13248765917脱敏之后为132****5917 |
| 21 | +public @interface PhoneNumber { | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 前缀保留长度 | ||
| 25 | + */ | ||
| 26 | + int prefixKeep() default 3; | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 后缀保留长度 | ||
| 30 | + */ | ||
| 31 | + int suffixKeep() default 4; | ||
| 32 | + | ||
| 33 | + /** | ||
| 34 | + * 替换规则,会将前缀后缀保留后,全部替换成 replacer | ||
| 35 | + * 例如:prefixKeep = 1; suffixKeep = 2; replacer = "*"; | ||
| 36 | + * 原始字符串 123456 | ||
| 37 | + * 脱敏后 1***56 | ||
| 38 | + */ | ||
| 39 | + String replacer() default "*"; | ||
| 40 | + | ||
| 21 | } | 41 | } |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/annotation/SliderDesensitize.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Slider.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.annotation; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.annotation; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.handler.SliderDesensitizationHandler; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize; |
| 4 | +import cn.iocoder.yudao.framework.desensitize.core.slider.handler.DefaultDesensitizationHandler; | ||
| 4 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 5 | import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; |
| 5 | 6 | ||
| 6 | import java.lang.annotation.Documented; | 7 | import java.lang.annotation.Documented; |
| @@ -16,8 +17,8 @@ import java.lang.annotation.Target; | @@ -16,8 +17,8 @@ import java.lang.annotation.Target; | ||
| 16 | @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) | 17 | @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) |
| 17 | @Retention(RetentionPolicy.RUNTIME) | 18 | @Retention(RetentionPolicy.RUNTIME) |
| 18 | @JacksonAnnotationsInside | 19 | @JacksonAnnotationsInside |
| 19 | -@Desensitize(desensitizationHandler = SliderDesensitizationHandler.class) | ||
| 20 | -public @interface SliderDesensitize { | 20 | +@Desensitize(desensitizationBy = DefaultDesensitizationHandler.class) |
| 21 | +public @interface Slider { | ||
| 21 | 22 | ||
| 22 | /** | 23 | /** |
| 23 | * 后缀保留长度 | 24 | * 后缀保留长度 |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/handler/SliderDesensitizationHandler.java renamed to yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java
| 1 | -package cn.iocoder.yudao.framework.desensitize.handler; | 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.handler; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.annotation.SliderDesensitize; | 3 | +import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler; |
| 4 | 4 | ||
| 5 | -/** | ||
| 6 | - * 滑动脱敏处理器 | ||
| 7 | - */ | ||
| 8 | -public class SliderDesensitizationHandler implements DesensitizationHandler<SliderDesensitize> { | 5 | +import java.lang.annotation.Annotation; |
| 6 | + | ||
| 7 | +public abstract class AbstractDesensitizationHandler<T extends Annotation> implements DesensitizationHandler<T> { | ||
| 9 | 8 | ||
| 10 | @Override | 9 | @Override |
| 11 | - public String desensitize(String origin, Object... arg) { | ||
| 12 | - int prefixKeep = (Integer) arg[0]; | ||
| 13 | - int suffixKeep = (Integer) arg[1]; | ||
| 14 | - String replacer = (String) arg[2]; | 10 | + public String desensitize(String origin, T anno) { |
| 11 | + Object[] args = getArgs(anno); | ||
| 12 | + int prefixKeep = (Integer) args[0]; | ||
| 13 | + int suffixKeep = (Integer) args[1]; | ||
| 14 | + String replacer = (String) args[2]; | ||
| 15 | 15 | ||
| 16 | int length = origin.length(); | 16 | int length = origin.length(); |
| 17 | 17 | ||
| @@ -31,10 +31,13 @@ public class SliderDesensitizationHandler implements DesensitizationHandler<Slid | @@ -31,10 +31,13 @@ public class SliderDesensitizationHandler implements DesensitizationHandler<Slid | ||
| 31 | origin.substring(prefixKeep + interval); | 31 | origin.substring(prefixKeep + interval); |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | - @Override | ||
| 35 | - public Object[] getAnnotationArgs(SliderDesensitize anno) { | ||
| 36 | - return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()}; | ||
| 37 | - } | 34 | + /** |
| 35 | + * 获取注解的参数 | ||
| 36 | + * | ||
| 37 | + * @param anno 注解信息 | ||
| 38 | + * @return 注解的参数 | ||
| 39 | + */ | ||
| 40 | + abstract Object[] getArgs(T anno); | ||
| 38 | 41 | ||
| 39 | /** | 42 | /** |
| 40 | * 根据长度循环构建替换符 | 43 | * 根据长度循环构建替换符 |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/BankCardDesensitization.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.handler; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.BankCard; | ||
| 4 | + | ||
| 5 | +public class BankCardDesensitization extends AbstractDesensitizationHandler<BankCard> { | ||
| 6 | + | ||
| 7 | + @Override | ||
| 8 | + Object[] getArgs(BankCard anno) { | ||
| 9 | + return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()}; | ||
| 10 | + } | ||
| 11 | +} | ||
| 0 | \ No newline at end of file | 12 | \ No newline at end of file |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.handler; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.CarLicense; | ||
| 4 | + | ||
| 5 | +public class CarLicenseDesensitization extends AbstractDesensitizationHandler<CarLicense> { | ||
| 6 | + @Override | ||
| 7 | + Object[] getArgs(CarLicense anno) { | ||
| 8 | + return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()}; | ||
| 9 | + } | ||
| 10 | +} |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.handler; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.ChineseName; | ||
| 4 | + | ||
| 5 | +public class ChineseNameDesensitization extends AbstractDesensitizationHandler<ChineseName> { | ||
| 6 | + @Override | ||
| 7 | + Object[] getArgs(ChineseName anno) { | ||
| 8 | + return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()}; | ||
| 9 | + } | ||
| 10 | +} |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.handler; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.Slider; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * 滑动脱敏处理器 | ||
| 7 | + */ | ||
| 8 | +public class DefaultDesensitizationHandler extends AbstractDesensitizationHandler<Slider> { | ||
| 9 | + | ||
| 10 | + @Override | ||
| 11 | + Object[] getArgs(Slider anno) { | ||
| 12 | + return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()}; | ||
| 13 | + } | ||
| 14 | +} |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.handler; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.FixedPhone; | ||
| 4 | + | ||
| 5 | +public class FixedPhoneDesensitization extends AbstractDesensitizationHandler<FixedPhone> { | ||
| 6 | + @Override | ||
| 7 | + Object[] getArgs(FixedPhone anno) { | ||
| 8 | + return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()}; | ||
| 9 | + } | ||
| 10 | +} |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/IdCardDesensitization.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.handler; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.IdCard; | ||
| 4 | + | ||
| 5 | +public class IdCardDesensitization extends AbstractDesensitizationHandler<IdCard> { | ||
| 6 | + @Override | ||
| 7 | + Object[] getArgs(IdCard anno) { | ||
| 8 | + return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()}; | ||
| 9 | + } | ||
| 10 | +} |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PasswordDesensitization.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.handler; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.Password; | ||
| 4 | + | ||
| 5 | +public class PasswordDesensitization extends AbstractDesensitizationHandler<Password> { | ||
| 6 | + @Override | ||
| 7 | + Object[] getArgs(Password anno) { | ||
| 8 | + return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()}; | ||
| 9 | + } | ||
| 10 | +} |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PhoneNumberDesensitization.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.desensitize.core.slider.handler; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.PhoneNumber; | ||
| 4 | + | ||
| 5 | +public class PhoneNumberDesensitization extends AbstractDesensitizationHandler<PhoneNumber> { | ||
| 6 | + | ||
| 7 | + @Override | ||
| 8 | + Object[] getArgs(PhoneNumber anno) { | ||
| 9 | + return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()}; | ||
| 10 | + } | ||
| 11 | +} |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/handler/RegexDesensitizationHandler.java deleted
| 1 | -package cn.iocoder.yudao.framework.desensitize.handler; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.framework.desensitize.annotation.RegexDesensitize; | ||
| 4 | - | ||
| 5 | -/** | ||
| 6 | - * 正则脱敏处理器 | ||
| 7 | - */ | ||
| 8 | -public class RegexDesensitizationHandler implements DesensitizationHandler<RegexDesensitize> { | ||
| 9 | - | ||
| 10 | - @Override | ||
| 11 | - public String desensitize(String origin, Object... arg) { | ||
| 12 | - String regex = (String) arg[0]; | ||
| 13 | - String replacer = (String) arg[1]; | ||
| 14 | - | ||
| 15 | - return origin.replaceAll(regex, replacer); | ||
| 16 | - } | ||
| 17 | - | ||
| 18 | - @Override | ||
| 19 | - public Object[] getAnnotationArgs(RegexDesensitize anno) { | ||
| 20 | - return new Object[]{anno.regex(), anno.replacer()}; | ||
| 21 | - } | ||
| 22 | - | ||
| 23 | -} |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/serializer/StringDesensitizeSerializer.java
| @@ -4,11 +4,9 @@ import cn.hutool.core.annotation.AnnotationUtil; | @@ -4,11 +4,9 @@ import cn.hutool.core.annotation.AnnotationUtil; | ||
| 4 | import cn.hutool.core.util.ArrayUtil; | 4 | import cn.hutool.core.util.ArrayUtil; |
| 5 | import cn.hutool.core.util.ReflectUtil; | 5 | import cn.hutool.core.util.ReflectUtil; |
| 6 | import cn.hutool.core.util.StrUtil; | 6 | import cn.hutool.core.util.StrUtil; |
| 7 | -import cn.iocoder.yudao.framework.desensitize.annotation.Desensitize; | ||
| 8 | -import cn.iocoder.yudao.framework.desensitize.annotation.RegexDesensitize; | ||
| 9 | -import cn.iocoder.yudao.framework.desensitize.annotation.SliderDesensitize; | ||
| 10 | -import cn.iocoder.yudao.framework.desensitize.handler.DesensitizationHandler; | ||
| 11 | -import cn.iocoder.yudao.framework.desensitize.handler.DesensitizationHandlerHolder; | 7 | +import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize; |
| 8 | +import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler; | ||
| 9 | +import cn.iocoder.yudao.framework.desensitize.core.base.DesensitizationHandlerHolder; | ||
| 12 | import com.fasterxml.jackson.core.JsonGenerator; | 10 | import com.fasterxml.jackson.core.JsonGenerator; |
| 13 | import com.fasterxml.jackson.databind.BeanProperty; | 11 | import com.fasterxml.jackson.databind.BeanProperty; |
| 14 | import com.fasterxml.jackson.databind.JsonMappingException; | 12 | import com.fasterxml.jackson.databind.JsonMappingException; |
| @@ -46,7 +44,7 @@ public class StringDesensitizeSerializer extends StdSerializer<String> implement | @@ -46,7 +44,7 @@ public class StringDesensitizeSerializer extends StdSerializer<String> implement | ||
| 46 | return this; | 44 | return this; |
| 47 | } | 45 | } |
| 48 | StringDesensitizeSerializer serializer = new StringDesensitizeSerializer(); | 46 | StringDesensitizeSerializer serializer = new StringDesensitizeSerializer(); |
| 49 | - serializer.setDesensitizationHandler(DesensitizationHandlerHolder.getDesensitizationHandler(annotation.desensitizationHandler())); | 47 | + serializer.setDesensitizationHandler(DesensitizationHandlerHolder.getDesensitizationHandler(annotation.desensitizationBy())); |
| 50 | return serializer; | 48 | return serializer; |
| 51 | } | 49 | } |
| 52 | 50 | ||
| @@ -62,22 +60,6 @@ public class StringDesensitizeSerializer extends StdSerializer<String> implement | @@ -62,22 +60,6 @@ public class StringDesensitizeSerializer extends StdSerializer<String> implement | ||
| 62 | Class<?> currentValueClass = currentValue.getClass(); | 60 | Class<?> currentValueClass = currentValue.getClass(); |
| 63 | Field field = ReflectUtil.getField(currentValueClass, currentName); | 61 | Field field = ReflectUtil.getField(currentValueClass, currentName); |
| 64 | 62 | ||
| 65 | - // 滑动处理器 | ||
| 66 | - SliderDesensitize sliderDesensitize = ArrayUtil.firstNonNull(AnnotationUtil.getCombinationAnnotations(field, SliderDesensitize.class)); | ||
| 67 | - if (sliderDesensitize != null) { | ||
| 68 | - value = this.desensitizationHandler.desensitize(value, this.desensitizationHandler.getAnnotationArgs(sliderDesensitize)); | ||
| 69 | - gen.writeString(value); | ||
| 70 | - return; | ||
| 71 | - } | ||
| 72 | - | ||
| 73 | - // 正则处理器 | ||
| 74 | - RegexDesensitize regexDesensitize = ArrayUtil.firstNonNull(AnnotationUtil.getCombinationAnnotations(field, RegexDesensitize.class)); | ||
| 75 | - if (regexDesensitize != null) { | ||
| 76 | - value = this.desensitizationHandler.desensitize(value, this.desensitizationHandler.getAnnotationArgs(regexDesensitize)); | ||
| 77 | - gen.writeString(value); | ||
| 78 | - return; | ||
| 79 | - } | ||
| 80 | - | ||
| 81 | // 自定义处理器 | 63 | // 自定义处理器 |
| 82 | Desensitize[] annotations = AnnotationUtil.getCombinationAnnotations(field, Desensitize.class); | 64 | Desensitize[] annotations = AnnotationUtil.getCombinationAnnotations(field, Desensitize.class); |
| 83 | if (ArrayUtil.isEmpty(annotations)) { | 65 | if (ArrayUtil.isEmpty(annotations)) { |
| @@ -86,8 +68,9 @@ public class StringDesensitizeSerializer extends StdSerializer<String> implement | @@ -86,8 +68,9 @@ public class StringDesensitizeSerializer extends StdSerializer<String> implement | ||
| 86 | } | 68 | } |
| 87 | 69 | ||
| 88 | for (Annotation annotation : field.getAnnotations()) { | 70 | for (Annotation annotation : field.getAnnotations()) { |
| 71 | + | ||
| 89 | if (AnnotationUtil.hasAnnotation(annotation.annotationType(), Desensitize.class)) { | 72 | if (AnnotationUtil.hasAnnotation(annotation.annotationType(), Desensitize.class)) { |
| 90 | - value = this.desensitizationHandler.desensitize(value, this.desensitizationHandler.getAnnotationArgs(annotation)); | 73 | + value = this.desensitizationHandler.desensitize(value, annotation); |
| 91 | gen.writeString(value); | 74 | gen.writeString(value); |
| 92 | return; | 75 | return; |
| 93 | } | 76 | } |
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/test/java/cn/iocoder/yudao/framework/desensitize/handler/DesensitizationHandlerTest.java deleted
| 1 | -package cn.iocoder.yudao.framework.desensitize.handler; | ||
| 2 | - | ||
| 3 | -import org.junit.jupiter.api.Assertions; | ||
| 4 | -import org.junit.jupiter.api.Test; | ||
| 5 | - | ||
| 6 | -public class DesensitizationHandlerTest { | ||
| 7 | - | ||
| 8 | - @Test | ||
| 9 | - public void testSliderDesensitizationHandler() { | ||
| 10 | - DesensitizationHandler handler = DesensitizationHandlerHolder.getDesensitizationHandler(SliderDesensitizationHandler.class); | ||
| 11 | - | ||
| 12 | - Assertions.assertEquals("A****FG", handler.desensitize("ABCDEFG", 1, 2, "*")); | ||
| 13 | - Assertions.assertEquals("芋**码", handler.desensitize("芋道源码", 1, 1, "*")); | ||
| 14 | - Assertions.assertEquals("****", handler.desensitize("芋道源码", 4, 0, "*")); | ||
| 15 | - } | ||
| 16 | - | ||
| 17 | - @Test | ||
| 18 | - public void testRegexDesensitizationHandler() { | ||
| 19 | - DesensitizationHandler handler = DesensitizationHandlerHolder.getDesensitizationHandler(RegexDesensitizationHandler.class); | ||
| 20 | - | ||
| 21 | - Assertions.assertEquals("e****@gmail.com", handler.desensitize("example@gmail.com", "(^.)[^@]*(@.*$)", "$1****$2")); | ||
| 22 | - Assertions.assertEquals("***,铁***", handler.desensitize("他妈的,铁废物", "他妈的|去你大爷|卧槽|草泥马|废物", "***")); | ||
| 23 | - } | ||
| 24 | - | ||
| 25 | -} |