国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一個注解優雅的實現接口數據脫敏

開發 前端
通常接口返回值中的一些敏感數據也是要脫敏的,比如身份證號、手機號碼、地址.....通常的手段就是用*隱藏一部分數據,當然也可以根據自己需求定制。

大家好,我是不才陳某~

通常接口返回值中的一些敏感數據也是要脫敏的,比如身份證號、手機號碼、地址.....通常的手段就是用*隱藏一部分數據,當然也可以根據自己需求定制。

言歸正傳,如何優雅的實現呢?有兩種實現方案,如下:

  • 整合Mybatis插件,在查詢的時候針對特定的字段進行脫敏
  • 整合Jackson,在序列化階段對特定字段進行脫敏

第一種方案網上很多實現方式,下面演示第二種,整合Jackson。

1. 自定義一個Jackson注解

需要自定義一個脫敏注解,一旦有屬性被標注,則進行對應得脫敏,如下:

/**
 * 自定義jackson注解,標注在屬性上
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@JacksonAnnotationsInside
@JsonSerialize(using = SensitiveJsonSerializer.class)
public @interface Sensitive {
    //脫敏策略
    SensitiveStrategy strategy();
}

2. 定制脫敏策略

針對項目需求,定制不同字段的脫敏規則,比如手機號中間幾位用*替代,如下:

/**
 * 脫敏策略,枚舉類,針對不同的數據定制特定的策略
 */
public enum SensitiveStrategy {
    /**
     * 用戶名
     */
    USERNAME(s -> s.replaceAll("(\\S)\\S(\\S*)", "$1*$2")),
    /**
     * 身份證
     */
    ID_CARD(s -> s.replaceAll("(\\d{4})\\d{10}(\\w{4})", "$1****$2")),
    /**
     * 手機號
     */
    PHONE(s -> s.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")),
    /**
     * 地址
     */
    ADDRESS(s -> s.replaceAll("(\\S{3})\\S{2}(\\S*)\\S{2}", "$1****$2****"));


    private final Function<String, String> desensitizer;

    SensitiveStrategy(Function<String, String> desensitizer) {
        this.desensitizer = desensitizer;
    }

    public Function<String, String> desensitizer() {
        return desensitizer;
    }
}

以上只是提供了部分,具體根據自己項目要求進行配置。

3. 定制JSON序列化實現

下面將是重要實現,對標注注解@Sensitive的字段進行脫敏,實現如下:

/**
 * 序列化注解自定義實現
 * JsonSerializer<String>:指定String 類型,serialize()方法用于將修改后的數據載入
 */
public class SensitiveJsonSerializer extends JsonSerializer<String> implements ContextualSerializer {
    private SensitiveStrategy strategy;

    @Override
    public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeString(strategy.desensitizer().apply(value));
    }

    /**
     * 獲取屬性上的注解屬性
     */
    @Override
    public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException {

        Sensitive annotation = property.getAnnotation(Sensitive.class);
        if (Objects.nonNull(annotation)&&Objects.equals(String.class, property.getType().getRawClass())) {
            this.strategy = annotation.strategy();
            return this;
        }
        return prov.findValueSerializer(property.getType(), property);

    }
}

4. 定義Person類,對其數據脫敏

使用注解@Sensitive注解進行數據脫敏,代碼如下:

@Data
public class Person {
    /**
     * 真實姓名
     */
    @Sensitive(strategy = SensitiveStrategy.USERNAME)
    private String realName;
    /**
     * 地址
     */
    @Sensitive(strategy = SensitiveStrategy.ADDRESS)
    private String address;
    /**
     * 電話號碼
     */
    @Sensitive(strategy = SensitiveStrategy.PHONE)
    private String phoneNumber;
    /**
     * 身份證號碼
     */
    @Sensitive(strategy = SensitiveStrategy.ID_CARD)
    private String idCard;
}

5. 模擬接口測試

以上4個步驟完成了數據脫敏的Jackson注解,下面寫個controller進行測試,代碼如下:

@RestController
public class TestController {
    @GetMapping("/test")
    public Person test(){
        Person user = new Person();
        user.setRealName("不才陳某");
        user.setPhoneNumber("19796328206");
        user.setAddress("浙江省杭州市....");
        user.setIdCard("4333333333334334333");
        return user;
    }
}

調用接口查看數據有沒有正常脫敏,結果如下:

{
    "realName": "不*陳某",
    "address": "浙江省****市..****",
    "phoneNumber": "197****8206",
    "idCard": "4333****34333"
}

6. 總結

數據脫敏有很多種實現方式,關鍵是哪種更加適合,哪種更加優雅.....

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2024-11-08 15:56:36

2022-06-21 14:44:38

接口數據脫敏

2025-02-23 08:00:00

冪等性Java開發

2023-08-01 08:54:02

接口冪等網絡

2022-06-10 13:03:44

接口重試while

2022-05-16 10:45:22

Redis接口限流緩存

2023-06-06 08:51:06

2022-12-12 08:14:47

2022-05-26 10:42:30

數據權限注解

2025-07-14 00:00:00

接口重試MQTT冪等性

2025-03-11 08:20:58

2023-10-09 07:37:01

2023-08-21 08:01:03

2022-05-31 08:36:41

微服務網關鑒權

2021-01-04 09:12:31

集合變量

2023-12-30 20:04:51

MyBatis框架數據

2022-06-20 08:37:28

接口tokenAO

2020-12-08 08:08:51

Java接口數據

2023-04-17 08:56:29

微服務鑒權業務

2020-11-03 16:00:33

API接口微服務框架編程語言
點贊
收藏

51CTO技術棧公眾號

中文字幕视频在线免费观看| 影音先锋欧美精品| 亚洲精品成人av| 久久国产一区| 97视频在线观看网站| 狠狠干 狠狠操| 神马电影网我不卡| 国产一区在线观看麻豆| 视频一区视频二区中文字幕| 这里只有精品电影| 日本一区二区三区在线视频 | 欧美日韩国产限制| 91色琪琪电影亚洲精品久久| 欧美精品一区二区三区涩爱蜜| 婷婷综合久久| 91精品国产麻豆| 中文字幕一区二区三区四区五区人| 国产精品久久久久av电视剧| 久久奇米777| 欧美亚洲日本黄色| 国产在线视频网址| 高清在线成人网| 国产精品69av| 狂野欧美性猛交xxxxx视频| av男人天堂一区| 91精品在线国产| 亚洲国产精品日韩专区av有中文| 欧美精品欧美精品系列| av动漫免费观看| 国产精品18久久久久| 91精品国产高清自在线| 深夜福利免费在线观看| 久久精品国产成人一区二区三区| 欧美第一黄网免费网站| 午夜在线网站| 久久国产精品一区二区| 午夜精品久久久久久久99热| 校园春色综合| 色婷婷精品久久二区二区蜜臀av| 一本一道久久久a久久久精品91| 亚洲精品18| 色琪琪一区二区三区亚洲区| 警花观音坐莲激情销魂小说| 国产欧美日韩精品一区二区三区 | 要久久电视剧全集免费| 欧美日韩国产另类不卡| 亚洲永久激情精品| 成人动漫中文字幕| 91情侣在线视频| 四虎视频在线精品免费网址| 亚洲黄色尤物视频| 一区二区三区av| 成年人午夜久久久| 麻豆免费网站| 成人午夜视频在线观看| 国产精品亚洲网站| 国产精品亚洲d| 欧美在线视频全部完| 日本www在线视频| 亚洲手机成人高清视频| 一区二区三区四区| 日本一区二区免费在线| 蜜桃91精品入口| 九九视频免费观看视频精品| 精品日韩一区二区三区| 男人天堂v视频| 日韩午夜av电影| 亚洲大胆精品| 日韩经典中文字幕| 日本在线免费看| 亚洲一二三区视频在线观看| 精品99在线视频| 日韩黄色小视频| 91精品久久久久久久久青青| 榴莲视频成人app| 亚洲毛片在线观看.| 成人日韩欧美| 在线视频综合导航| 欧美性生活一级| 国产美女精品久久久| 精品国产乱码久久久久久蜜坠欲下 | 影音先锋日韩在线| 国产69精品久久久| 成人国产精品一区二区免费麻豆 | 欧美男女爱爱视频| 美国毛片一区二区三区| www.精品在线| 久久综合九色综合97婷婷| 3dmax动漫人物在线看| 欧美国产日韩一二三区| 男女爱爱视频网站| 色综合网色综合| 久久三级中文| 欧美精品免费观看二区| 欧美欧美全黄| 成人疯狂猛交xxx| 91在线精品一区二区三区| 国产欧美自拍视频| 日韩欧美a级成人黄色| 在线观看入口黄最新永久免费国产 | 激情福利在线| 国产综合在线看| 懂色中文一区二区在线播放| 日本激情在线观看| 成人网中文字幕| 亚洲欧美一区二区三区极速播放 | 99.玖玖.com| 国产精品区一区二区三区| 激情六月丁香婷婷| 亚洲国产精品嫩草影院久久| 外国成人免费视频| 欧美承认网站| 91精品国产色综合久久不卡98口| 成人毛片视频在线观看| 超碰在线资源| 色妞久久福利网| 日本国产亚洲| 伊人久久青草| 成人精品视频一区二区三区尤物| 日本美女在线中文版| 91免费看网站| 色欧美日韩亚洲| 日韩情爱电影在线观看| 91网站在线免费观看| 亚洲精品免费在线观看| 国产厕拍一区| 成人美女av在线直播| 亚洲靠逼com| 黄上黄在线观看| 成人精品一区二区三区电影免费| 最新不卡av在线| 国产福利片在线| 精品视频www| 蜜臀av一区| 久久综合九色综合网站| 欧美区一区二区三区| 欧美1区2区3区| 中文字幕日韩一区二区三区 | 一个色综合网| 黄色大片在线看| 91网免费观看| 欧美性videosxxxxx| 免费毛片b在线观看| 国内精品小视频| 欧美国产禁国产网站cc| 国产亚洲精品美女久久| 1024亚洲| 日韩丝袜美女视频| 丝瓜av网站精品一区二区| 手机av在线播放| 久久久久久久久久久成人| 天天做天天爱天天综合网| 你懂得在线网址| 亚洲图片在区色| 国产伦精品一区二区三区视频| 福利视频午夜| 精品99一区二区| 青草伊人久久| 国产中文一区二区| 欧美一区二区三区成人| 久久99国产精品麻豆| 亚洲图片小说区| 欧美精品123| 一本色道久久88精品综合| 久久色中文字幕| 精品一区av| 在线播放日韩精品| 久久蜜桃香蕉精品一区二区三区| 极品国产人妖chinesets亚洲人妖 激情亚洲另类图片区小说区 | 成人3d精品动漫精品一二三| 午夜精品电影在线观看| 亚洲欧洲av另类| 亚洲va在线| √天堂8资源中文在线| 91久久国产综合久久91精品网站| 欧美日韩国产另类不卡| 国产酒店精品激情| 成人在线二区| 欧美精品亚州精品| 麻豆精品网站| 高清视频在线www色| 久久久福利视频| 久久夜精品香蕉| 久久av资源站| 青青一区二区| а√天堂官网中文在线| 久草精品在线播放| 精品伊人久久97| 亚洲日本成人在线观看| 精久久久久久| 在线观看国产高清视频| 亚洲国产婷婷香蕉久久久久久99| 亚洲国产cao| 欧美xxxx在线| av在线免费网站| 日韩爱爱小视频| 亚洲精品国产精品久久| 日本久久久久久久| 国产精品五月天| 日韩中文字幕av电影|