2015-08-22 99 views
0

我使用Spring Boot和spring-boot-starter-data-mongodb包一起使用。Spring Boot和Spring Data MongoDB:在ResponseBody中隱藏字段

我已經成功地創建了一個方法返回的帳戶信息爲我的應用程序:

public Account queryAccountInfo(String userId) { 
    Query query = new Query(); 
    query.addCriteria(Criteria.where("userId").is(userId)); 
    return mongoTemplate.findOne(query, Account.class); 
} 

現在,這個返回賬戶類,這是我創建了一個自定義類的所有信息:

public class Account { 

     public Account(){} 


     @Id 
     private String id; 
     private String email; 
     private String token; 
} 

現在,春天將在ResponseBody對象返回整個帳戶對象,因此它會創建一個類似的JSON:

{ 
    "id": "1234567890", 
    "email": "[email protected]", 
    "token": "XXX-XXX-XXX"} 

我不希望它返回「標記」,因爲這是敏感信息。我怎樣才能讓Spring不返回「token」字段,而是返回其他所有內容?

我敢肯定有一個Spring註解,讓我這樣做,但我似乎無法找到它:http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/annotation/package-frame.html

回答

1

的方法應該是:

query.fields().exclude("token"); 
0

您的實際問題是沒有mongodb bean對象和API中使用的對象的分離。雖然在項目的PoC階段這不是必需的,但當遇到類似問題時,您應該添加第二組bean,用於在spring-data-mongo中使用的對象之間進行通信和映射。