甘肃手机版建站系统哪个好,wordpress改mip,手机版网站开发人员选项,数据分析师资格证书文详细解析在Spring Boot应用中优雅地脱敏敏感信息#xff0c;如手机号、邮箱、身份证等#xff0c;使用的是Jackson库中的JsonSerializer。
1. 创建自定义脱敏序列化器
首先#xff0c;创建一个继承自JsonSerializerString的序列化器。以MobileSerializer为例如手机号、邮箱、身份证等使用的是Jackson库中的JsonSerializer。
1. 创建自定义脱敏序列化器
首先创建一个继承自JsonSerializerString的序列化器。以MobileSerializer为例代码如下
import cn.hutool.core.util.DesensitizedUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;import java.io.IOException;/*** p* 自定义手机序列号器* /p** author snogzixian* since 2023-09-24*/
public class MobileSerializer extends JsonSerializerString {/*** 自定义序列化方法用于对手机号进行脱敏处理并写入JSON生成器。** param mobile 要序列化的手机号* param jsonGenerator JSON生成器用于写入序列化后的数据* param serializerProvider 序列化提供者提供序列化所需的服务* throws IOException 如果在序列化过程中发生I/O错误*/Overridepublic void serialize(String mobile, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {// 检查手机号是否为null或者是否是有效的手机号if (mobile null || !isValidMobile(mobile)) {// 如果手机号无效直接输出原始手机号jsonGenerator.writeString(mobile);return;}// 调用脱敏工具类对手机号进行脱敏处理String mobileDesensitized DesensitizedUtil.mobilePhone(mobile);// 将脱敏后的手机号字符串写入到JSON生成器jsonGenerator中jsonGenerator.writeString(mobileDesensitized);}/*** 检查手机号的合法性** param mobile 手机号* return 如果手机号合法则返回true否则返回false*/private boolean isValidMobile(String mobile) {// 在此处添加对手机号合法性的检查逻辑return true;}
}
其中serialize方法用于处理数据的脱敏逻辑isValidMobile用于检查数据的合法性。
2. 使用自定义序列化器
在实体类中使用JsonSerialize注解指定字段使用自定义序列化器。例如对于一个用户的手机号我们在实体类中如下使用
/*** p* 实体类* /p** author snogzixian* since 2023-09-24*/
public class User {JsonSerialize(using MobileSerializer.class)private String mobile;// 其他字段和getter、setter
}
3. 扩展性 - 支持多类型数据脱敏
为支持多类型数据如邮箱、身份证等脱敏你可以为每种数据类型创建对应的序列化器类类似于MobileSerializer。
例如创建一个EmailSerializer处理邮箱脱敏
public class EmailSerializer extends JsonSerializerString {// 实现邮箱的脱敏逻辑
}
在实体类中对应字段使用JsonSerialize注解指定使用EmailSerializer。
public class User {JsonSerialize(using EmailSerializer.class)private String email;// 其他字段和getter、setter
}