From 177249c76aeea0b4bf8d8816d4994e3b445b45ce Mon Sep 17 00:00:00 2001 From: huanghongfa <huanghongfa123456> Date: 星期四, 02 九月 2021 10:39:34 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/zzj' into zzj --- springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/model/helper/sensitive/SensitiveInterceptor.java | 38 ++++++++++++++++++-------------------- 1 files changed, 18 insertions(+), 20 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/model/helper/sensitive/SensitiveInterceptor.java b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/model/helper/sensitive/SensitiveInterceptor.java index 3cb7169..7fd3ef3 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/model/helper/sensitive/SensitiveInterceptor.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/model/helper/sensitive/SensitiveInterceptor.java @@ -1,8 +1,10 @@ package com.panzhihua.service_grid.model.helper.sensitive; -import com.panzhihua.common.model.helper.sensitive.Sensitive; -import com.panzhihua.common.model.helper.sensitive.SensitiveStrategy; -import lombok.extern.slf4j.Slf4j; +import java.lang.reflect.Field; +import java.sql.Statement; +import java.util.List; +import java.util.stream.Stream; + import org.apache.ibatis.executor.resultset.ResultSetHandler; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.plugin.Intercepts; @@ -14,19 +16,18 @@ import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; -import java.lang.reflect.Field; -import java.sql.Statement; -import java.util.List; -import java.util.stream.Stream; +import com.panzhihua.common.model.helper.sensitive.Sensitive; +import com.panzhihua.common.model.helper.sensitive.SensitiveStrategy; + +import lombok.extern.slf4j.Slf4j; /** * 字段脱敏拦截器 + * * @author cedoo * @since 2021-4-1 10:40:52 */ -@Intercepts(@Signature(type = ResultSetHandler.class, - method = "handleResultSets", - args = {Statement.class})) +@Intercepts(@Signature(type = ResultSetHandler.class, method = "handleResultSets", args = {Statement.class})) @Slf4j @ConditionalOnProperty(value = "domain.sensitive", havingValue = "true") @Component @@ -35,39 +36,36 @@ @SuppressWarnings("unchecked") @Override public Object intercept(Invocation invocation) throws Throwable { - //log.debug("脱敏拦截器"); - List<Object> records = (List<Object>) invocation.proceed(); + // log.debug("脱敏拦截器"); + List<Object> records = (List<Object>)invocation.proceed(); // 对结果集脱敏 records.forEach(this::sensitive); return records; } - private void sensitive(Object source) { - if(source!=null) { + if (source != null) { // 拿到返回值类型 Class<?> sourceClass = source.getClass(); // 初始化返回值类型的 MetaObject MetaObject metaObject = SystemMetaObject.forObject(source); // 捕捉到属性上的标记注解 @Sensitive 并进行对应的脱敏处理 - Stream.of(sourceClass.getDeclaredFields()) - .filter(field -> field.isAnnotationPresent(Sensitive.class)) - .forEach(field -> doSensitive(metaObject, field)); + Stream.of(sourceClass.getDeclaredFields()).filter(field -> field.isAnnotationPresent(Sensitive.class)) + .forEach(field -> doSensitive(metaObject, field)); } } - private void doSensitive(MetaObject metaObject, Field field) { // 拿到属性名 String name = field.getName(); // 获取属性值 Object value = metaObject.getValue(name); - // 只有字符串类型才能脱敏 而且不能为null + // 只有字符串类型才能脱敏 而且不能为null if (String.class == metaObject.getGetterType(name) && value != null) { Sensitive annotation = field.getAnnotation(Sensitive.class); // 获取对应的脱敏策略 并进行脱敏 SensitiveStrategy type = annotation.strategy(); - Object o = type.getDesensitizer().apply((String) value); + Object o = type.getDesensitizer().apply((String)value); // 把脱敏后的值塞回去 metaObject.setValue(name, o); } -- Gitblit v1.7.1