Java 中数据脱敏的实现

news/2025/3/10 23:32:43/

数据脱敏

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

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

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

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

java">public class IdNumberJsonSerializer extends JsonSerializer<String> {/*** 举例:身份证号脱敏处理** @return: String 脱敏后的结果* @param: value 需要被序列化的字符串对象* @param: jsonGenerator Json 生成器对象,用于生成 JSON 字符串* @param: serializerProvider 序列化提供者,用于提供序列化相关的上下文信息*/@Overridepublic 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 注解

java">public class User {/** 姓名 */private String name;/** 年龄 */private int age;/** 身份证号 */@JsonSerialize(using = IdNumberJsonSerializer.class)private String idCard;}

优点:使用灵活方便


http://www.ppmy.cn/news/1578203.html

相关文章

第十五届蓝桥杯省赛电子类单片机学习过程记录(客观题)

客观试题: 01.典型的BUCK电源电路包含哪些关键器件(ABCD) A. 电容 B. 二极管 C. 电感 D. MOSFET 解析: 典型的 BUCK 电源电路是一种降压型的直流-直流转换电路,它包含以下关键器件: A.电容:电容在电路中起到滤波的作用。输入电容用于平滑输入电压的波动,减少电源噪声对…

ArcGIS 工程文件到 ArcGIS Pro 的无缝迁移:详细步骤与技巧

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;ArcGIS 长期以来都是专业人士进行地图制作、空间分析和数据管理的重要工具。 随着技术的不断进步&#xff0c;Esri 公司推出了 ArcGIS Pro&#xff0c;这款新一代的 GIS 软件以其更强大的功能、更高效的性能和更直观…

初识Bert

在学习Bert之前我们先了解“递归神经网络&#xff08;RNN Recurrent neural network)” 和 “长短期记忆&#xff08;LSTM Long short-term memory)” 我们如果仅仅识别每个字的含义&#xff0c;那么在一句话中没有相同的字还是可以的但是如果一句话中有相同的字&#xff0c;那…

解释 HTTP 中的内容协商,如何根据客户端偏好返回合适的内容?

一、内容协商的本质与价值 内容协商&#xff08;Content Negotiation&#xff09;是HTTP协议中客户端与服务器就资源表现形式达成一致的协商机制。其核心价值在于&#xff1a;​用同一URI提供资源的不同表现形式&#xff0c;同时保证客户端获得最适合自身环境的内容版本。 典…

20250307-vue侦听器

当我们需要在状态变化时执行一些 “副作用”&#xff1a;例如更改 DOM&#xff0c;或是根据异步操作的结果去修改另一处的状态。 我们可以使用 watch 选项在每次响应式属性发生变化时触发一个函数。(响应式属性‌是指那些能够在被修改时自动更新视图的属性) 【 什么是 Promi…

使用 Docker 部署 Nginx,配置后端 API 轮询与多个子域名前端应用

使用 Docker 部署 Nginx&#xff0c;配置后端 API 轮询与多个子域名前端应用 在这篇博客中&#xff0c;我们将介绍如何通过 Docker 部署 Nginx 服务器&#xff0c;并配置 多个后端 API 的轮询负载均衡&#xff0c;同时通过 子域名 部署多个不同的前端应用。Nginx 将作为反向代…

利用pdf.js+百度翻译实现PDF翻译,创建中文PDF

基于JavaScript的PDF文档解析与智能翻译系统开发实践 一、功能预览 1.1 PDF加载 1.2 PDF翻译 二、系统架构设计 2.1 PDF智能翻译系统架构设计 层级模块名称功能描述技术实现呈现层Canvas渲染器PDF文档可视化渲染PDF.js + 动态视口计算 + 矩阵变换

C++修炼之路:初识C++

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 引言 …