当前位置: 首页 > article >正文

Java 中数据脱敏的实现

数据脱敏

首先,要思考一个问题,SpringBoot 查询到的一条数据是一个 Java 对象,为什么返回给前端时候,前端拿到的却是 JSON 格式的数据呢?

是因为 SpringBoot 默认采用了 Jackson 作为序列化器,而 Jackson 序列化框架会自动把 Java 对象转换成 JSON 格式的数据,然后返回。

通过这个思路,就可以得到一个方案,就是在 JSON 序列化这个层面,去解决这个问题,从而对数据进行脱敏。

1. 自定义一个 Jackson 序列化器

public class IdNumberJsonSerializer extends JsonSerializer<String> {

  /**
	 * 举例:身份证号脱敏处理
	 *
	 * @return: String 脱敏后的结果
	 * @param: value 需要被序列化的字符串对象
	 * @param: jsonGenerator Json 生成器对象,用于生成 JSON 字符串
	 * @param: serializerProvider 序列化提供者,用于提供序列化相关的上下文信息
	 */
  @Override
  public void serialize(
    String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider
  ) throws IOException {
    if(value != null) {
      value = value.replaceAll("(\\d{6})\\d{10}(\\w{2})", "$1********$2");
      jsonGenerator.writeString(value);
      return;
    }
    jsonGenerator.writeNull();
  }
}

这里以身份证号进行举例

2. 把自定义序列化器应用到对应字段

在需要脱敏的字段上添加 @JsonSerialize 注解

public class User {

  /** 姓名 */
  private String name;

  /** 年龄 */
  private int age;

  /** 身份证号 */
  @JsonSerialize(using = IdNumberJsonSerializer.class)
  private String idCard;

}

优点:使用灵活方便


http://www.kler.cn/a/579435.html

相关文章:

  • Java集合框架全解析:从数据结构到高并发简单解析
  • 数据库语句
  • nginx配置反向代理服务器,实现在https网站中请求http资源
  • 在 ASP.NET Core 中启用 Brotli 和 Gzip 响应压缩
  • SoftKeyboard安卓输入法详解
  • Qt之QGraphicsView图像操作
  • 城市霓虹灯夜景拍照后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 数字信号处理之信号功率谱计算welch方法(分段加窗平均周期图)、Bartlett方法(周期图)(Python)
  • 为wordpress自定义一个留言表单并可以在后台进行管理的实现方法
  • DeepSeek 3FS:端到端无缓存的存储新范式
  • HTML 区块元素详解
  • 蓝桥杯备考:进制转换问题
  • 大中型水闸安全监测系统的内容和功能
  • 二次SQL注入
  • Windows控制台函数:控制台输出函数WriteConsoleA()
  • 大白话Vue Router 中路由守卫(全局守卫、路由独享守卫、组件内守卫)的种类及应用场景
  • Vue.js框架设计中的权衡艺术:解析性能、可维护性与范式选择
  • VisionPro、VisionMaster 多模板匹配分类(大球刀、小球刀、尖刀、三角刀)
  • C++修炼之路:初识C++
  • 【SegRNN 源码理解】【今天不水文系列】编码器部分理解