Skip to content

SmartAdmin三级等保-数据脱敏

登录相关功能

SmartAdmin的脱敏功能完全满足三级等保,且支持配置化,具体如下功能:

  • 对于敏感数据进行 加星 * 脱敏
  • 手机号、身份证号码、车牌号、银行卡、地址等等

脱敏实现

  • 使用@DataMasking 注解放在需要脱敏的JavaBean 字段上
  • 使用 DataMaskingSerializer 序列化对于 @DataMasking注解字段进行脱敏
  • 脱敏工具类 SmartDataMaskingUtil

脱敏数据类型

java
public enum DataMaskingTypeEnum {

    COMMON(null, "通用"),
    PHONE(DesensitizedUtil.DesensitizedType.MOBILE_PHONE, "手机号"),
    CHINESE_NAME(DesensitizedUtil.DesensitizedType.CHINESE_NAME, "中文名"),
    ID_CARD(DesensitizedUtil.DesensitizedType.ID_CARD, "身份证号"),
    FIXED_PHONE(DesensitizedUtil.DesensitizedType.FIXED_PHONE, "座机号"),
    ADDRESS(DesensitizedUtil.DesensitizedType.ADDRESS, "地址"),
    EMAIL(DesensitizedUtil.DesensitizedType.EMAIL, "电子邮件"),
    PASSWORD(DesensitizedUtil.DesensitizedType.PASSWORD, "密码"),
    CAR_LICENSE(DesensitizedUtil.DesensitizedType.CAR_LICENSE, "中国大陆车牌"),
    BANK_CARD(DesensitizedUtil.DesensitizedType.BANK_CARD, "银行卡"),
    USER_ID(DesensitizedUtil.DesensitizedType.USER_ID, "用户id");

Demo

java
    @Data
    public static class DataVO {

        @DataMasking(DataMaskingTypeEnum.USER_ID)
        private Long userId;

        @DataMasking(DataMaskingTypeEnum.PHONE)
        private String phone;

        @DataMasking(DataMaskingTypeEnum.ID_CARD)
        private String idCard;

        @DataMasking(DataMaskingTypeEnum.ADDRESS)
        private String address;

        @DataMasking(DataMaskingTypeEnum.PASSWORD)
        private String password;

        @DataMasking(DataMaskingTypeEnum.EMAIL)
        private String email;

        @DataMasking(DataMaskingTypeEnum.CAR_LICENSE)
        private String carLicense;

        @DataMasking(DataMaskingTypeEnum.BANK_CARD)
        private String bankCard;

        @DataMasking
        private String other;

    }