最无用的工具类封装——DesensitizedUtils
主要是实现 Json 字段值脱敏,结合 gateway filter,实现统一的脱敏配置
社会我 T 哥,人狠话不多 。上代码
添加依赖(spring 自带)
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.4.2</version>
</dependency>
DesensitizedUtils
package cn.texous.demo.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.NullNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.TextNode;
import cn.texous.demo.utils.StringUtils;
import cn.texous.demo.utils.ValidateUtils;
import lombok.extern.slf4j.Slf4j;
import javax.validation.constraints.NotNull;
import java.util.*;
/**
* 数据脱敏工具
*
* @author texousliu
* @since 2022-10-14
*/
@Slf4j
public class DesensitizedUtils {
private static final ObjectMapper OM = new ObjectMapper();
/**
* read jsonString to JsonNode
*
* @param jsonString jsonString
* @return JsonNode
*/
public static JsonNode readTree(String jsonString) {
JsonNode jsonNode = null;
try {
jsonNode = OM.readTree(jsonString);
} catch (JsonProcessingException e) {
log.error("Read jsonString to JsonNode error", e);
}
return jsonNode;
}
/**
* 对 jsonString 的 key 对应的 value 进行脱敏
* <p>
* keys 表示不区分层级,key 一致则替换。<br>
* detailKeys 表示详细路径 key,例如 data 或者 data.records.id
*
* @param jsonString jsonString
* @param keys 全局 key,匹配则替换
* @param detailKeys 详细路径key,层级关系及key匹配才替换
* @return result
*/
public static String desensitizedJsonString(String jsonString,