jeecgboot自定義數據脫敏

說明:

數據脫敏:將敏感信息通過替換、加密等方式處理。分兩種場景:

  • 1.數據庫存儲的是脫敏後的,如用戶的密碼信息,存儲到數據庫的是加密後的數據,當需要展示真實的數據的時候,支持解密還原

  • 2.數據庫存儲的是明文,展示的數據是做特殊處理的 s

下文主要講第二種方式的整合和使用示例

代碼說明:

  • 枚舉類:SensitiveEnum,用於設置數據脫敏的處理方式
  • 字段註解:@SensitiveField(type = SensitiveEnum.ENCODE),標識該字段需要作脫敏處理
  • 方法註解:@EncryptSensitive(entity = SensitiveDemo.class, reverse = true),標識該方法的返回值會作脫敏處理。因爲返回對象可能包含多種java類,註解屬性entity用於標識類,reverse標識是否需要反向解密,默認false。

總結: 只要是方法上添加了註解@EncryptSensitive,就表示該方法的返回值會作脫敏處理:找返回值對象中的特殊java類(entity申明),然後找對應註解@SensitiveField標識的字段,最後根據type作不同處理。

使用:

支持4種場景

1.方法返回值類型和註解屬性entity一致

   @EncryptSensitive(entity = SensitiveDemo.class)
    public SensitiveDemo test1(){
        return getOne();
    }
	
	
    public class SensitiveDemo {

      @SensitiveField(type = SensitiveEnum.CHINESE_NAME)
      private String username;

      @SensitiveField(type = SensitiveEnum.ENCODE)
      private String password;

      @SensitiveField(type = SensitiveEnum.MOBILE_PHONE)
      private String phone;

      @SensitiveField(type = SensitiveEnum.ADDRESS)
      private String address;
  }

查詢效果:

2.方法返回值是List,泛型和註解屬性entity一致

   @EncryptSensitive(entity = SensitiveDemo.class)
    public List<SensitiveDemo> test2(){
        return getList();
    }

查詢效果:

3.方法返回值對象的屬性和註解屬性entity一致

    @EncryptSensitive(entity = SensitiveDemo.class)
    public SensitiveEntityDemo test3(){
        SensitiveEntityDemo demo = new SensitiveEntityDemo();
        demo.setDemo(getOne());
        demo.setNote("嵌套對象");
        return demo;
    }
	
    public class SensitiveEntityDemo {
      private String note;
	  // 該屬性類型和註解屬性entity一致
      private SensitiveDemo demo;
  }

4.方法返回值對象的屬性是list,泛型和註解屬性entity一致

  @EncryptSensitive(entity = SensitiveDemo.class)
    public SensitiveListDemo test4(){
        SensitiveListDemo listDemo = new SensitiveListDemo();
        listDemo.setDemoList(getList());
        listDemo.setNote("嵌套對象2");
        return listDemo;
    }
	
  public class SensitiveListDemo {
      private String note;
     // 該屬性是list,泛型和註解屬性entity一致
      private List<SensitiveDemo> demoList;
  }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章