关于数据脱敏,Spring boot 有话说

前言

在项目开发过程中,有一些特殊场景需要对敏感数据进行脱敏返回展示,比如用户的手机号、证件号、真实姓名、邮箱等,返回如:176****9331 之类的,怎么实现呢?

使用@JsonSerialize对数据进行格式化

首先,来看个简单的例子,数据库有个20位的Long 类型的ID,返回到前端之后,因为前端类型问题,会丢失精度,这个时候,我们就需要将Long 类型的数据格式化为String类型进行返回,代码如下:

@Data
public class Demo {
   

  /** 数据ID **/
  @JsonSerialize(using = StringSerializer.class)
  private Long id;
}

上面的代码,只需要在字段添加 @JsonSerialize(using = StringSerializer.class) 注解就可以完成Long 返回 String 的格式化效果。接下来,我们看看 StringSerializer 做了什么事情,源码:

public final class StringSerializer extends StdScalarSerializer<Object> {
   
    private static final long serialVersionUID = 1L;

    public StringSerializer() {
   
        super(String.class, false);
    }

    public boolean isEmpty(SerializerProvider prov, Object value) {
   
        String str = (String)value;
        return str.isEmpty();
    }
    // 主要关注这个方法,这个是序列化方法
    public void serialize(Object value, JsonGenerator gen, SerializerProvider provider) throws IOException {
   
        // 将 object 直接转换成 String 返回
        gen.writeString((String)value);
    }

    public final void serializeWithType
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值