跳到主要内容

接口数据脱敏功能

使用@Desensitized注解,标注在实体类字段上即可。

注解参数:

参数类型默认值说明
valueDesensitizedType脱敏数据类型(必填)
prefixNoint1前置不需要打码的长度(自定义属性)
suffixNoint1后置不需要打码的长度(自定义属性)
symbolchar*打码字符(自定义属性)
percentagedouble0d打码百分占比(since 0.1.6)

默认使用value对应的内置策略进行脱敏,

value=DesensitizedType.CUSTOMER时,使用prefixNosuffixNosymbol的形式进行脱敏。

value=DesensitizedType.CUSTOMER_PERCENTAGE时,使用percentagesymbol的形式进行脱敏(since 0.1.7)


栗子:

// 定义实体
@Data
private static class Car{
private String brandName="东风小康";
@Desensitized(value = DesensitizedType.CUSTOMER, prefixNo = 5, suffixNo = 10)
private String brandHistory="成立于2003年6月,是由重庆小康工业集团股份有限公司和东风汽车集团有限公司各持股50%组建的混合所有制大型整车企业。";
private String displacement="1.5L";
@Desensitized(DesensitizedType.CHINESE_NAME)
private String driverName="熊佳欣";
@Desensitized(DesensitizedType.ID_CARD)
private String driverIdNum="460201199804059432";
@Desensitized(DesensitizedType.EMAIL)
private String driverEmail="51ab@06x71sav.com";
}

// web接口
@GetMapping("getCar")
@ApiOperation("脱敏测试")
@SneakyThrows
public Result getCar(){
return R.OK(new Car());
}

返回值:

{
"code": 200,
"message": "操作成功!",
"data": {
"brandName": "东风小康",
"brandHistory": "成立于20********************************************所有制大型整车企业。",
"displacement": "1.5L",
"driverName": "熊**",
"driverIdNum": "4***************32",
"driverEmail": "5***@06x71sav.com"
}
}