代码之家  ›  专栏  ›  技术社区  ›  Thomas Mwania

在春季启动休眠搜索中索引时屏蔽敏感数据

  •  0
  • Thomas Mwania  · 技术社区  · 6 年前

    我使用的是SpringBoot2.0.2和HibernateSearch5.10.2。 我的实体类如下:

        @Entity
        @Table(name = "CUSTOMERS")
        @Indexed(index = "indexes_customer")
        @JsonIgnoreProperties(ignoreUnknown = true)
        public class Beneficiary implements Serializable {
            private static final long serialVersionUID = 1L;
            @Id
            @Column(name = "ID", nullable = false)
            @GeneratedValue(strategy = GenerationType.IDENTITY)
            private long id;
    
            @Basic
            @Column(name = "CARD_NUMBER", length = 18)
            @Field(analyze = Analyze.NO, store = Store.YES)
            @SortableField
            private String cardNumber;
    
            @Basic
            @Column(name = "FULL_NAME", length = 60)
            @Field(analyze = Analyze.NO, store = Store.YES)
            @SortableField
            private String fullName;
            //Getters & setters
    

    卡片数据以纯文本形式保存,但在显示给前台用户时会被屏蔽。但是,我想在索引时隐藏卡号。 目前,我的索引如下:

    {
      "_index": "indexes_customer",
      "_type": "mypackage.Customer",
      "_id": "24",
      "_version": 3,
      "_score": 1,
      "_source": {
        "id": "24",
        "name": "Customer Name",
        "cardNumber": "1234567891011"
      }
    }
    

    我希望它看起来更像这样:

    {
      "_index": "indexes_customer",
      "_type": "mypackage.Customer",
      "_id": "24",
      "_version": 3,
      "_score": 1,
      "_source": {
        "id": "24",
        "name": "Customer Name",
        "cardNumber": "1234******1011"
      }
    }
    

    谢谢

    1 回复  |  直到 6 年前
        1
  •  2
  •   Sanne    6 年前

        @Basic
        @Column(name = "CARD_NUMBER", length = 18)
        String getCardNumber(){ ..}
    
        @Field(analyze = Analyze.NO, store = Store.YES, name="card_number")
        @SortableField
        @javax.persistence.Transient
        String getIndexedCardNumber() {
             return maskCardNumber( getCardNumber() );
        }
    

    Analyzer