系统使用
Jackson
序列化策略 对标注了@Sensitive
注解的属性进行脱敏处理
【手机号码】前三位,后4位,其他隐藏,比如151****8888
public class POJO {
@Sensitive(strategy = SensitiveStrategy.PHONE)
private String phone;
}
【身份证号】前3位 和后4位
public class POJO {
@Sensitive(strategy = SensitiveStrategy.ID_CARD)
private String idcard;
}
【地址】只显示到地区,不显示详细地址,比如:陕西省西安市********
public class POJO {
@Sensitive(strategy = SensitiveStrategy.ADDRESS)
private String address;
}
【电子邮箱】邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示,比如:d**@gmail.com
public class POJO {
@Sensitive(strategy = SensitiveStrategy.EMAIL)
private String email;
}
【银行卡号脱敏】脱敏规则根据卡号长度调整,所以只展示前4位,后面的位数根据卡号决定展示1-4位 例如:
“1234 2222 3333 4444 6789 9” -> “1234 **** **** **** **** 9”
“1234 2222 3333 4444 6789 91” -> “1234 **** **** **** **** 91”
“1234 2222 3333 4444 678” -> “1234 **** **** **** 678”
“1234 2222 3333 4444 6789” -> “1234 **** **** **** 6789”
public class POJO {
@Sensitive(strategy = SensitiveStrategy.BANK_CARD)
private String bankCard;
}
可根据角色用户决定是否进行脱敏。例如:
public class User {
@Sensitive(strategy = SensitiveStrategy.BANK_CARD, roleKey = "common")
private String bankCardNumber;
}
只要拥有common
角色,就不进行脱敏处理
public class User {
@Sensitive(strategy = SensitiveStrategy.BANK_CARD, perms = "system:user:query")
private String bankCardNumber;
}
只要拥有system:user:query
菜单权限,就不进行脱敏处理
在类 org/dromara/common/sensitive/core/SensitiveStrategy.java
下修改添加自定义策略。
使用 @SensitiveIgnore
注解标注在需要忽略属性的类或属性中
// 忽略整个类的脱敏
@SensitiveIgnore
public class User {
private Sub subField;
}
// 忽略某个字段的脱敏
public class User {
@SensitiveIgnore
private Sub subField;
}
// 忽略某个方法的脱敏
public class User {
private Sub subField;
@SensitiveIgnore
public Sub getSubField() {
return this.subField;
}
}
1
powered by kaifamiao