我想在用户域的密码属性中添加Jackson的@JsonIgnore,这样我必须能够发送带有密码的Json,并将数据保存在数据库中,但作为响应,我不想显示密码。
我怎样才能帮助我。
我尝试在用户的域级别使用它,其中定义了属性,但它完全忽略了getter和setter方法中的属性。
我试过这个
private String password;
@JsonIgnore
public String getPassword() {
return this.password;
}
答案 0 :(得分:22)
尝试在您的课程中使用@JsonIgnore
和@JsonProperty
,如下所示:
private String password;
@JsonIgnore
public String getPassword() {
return password;
}
@JsonProperty
public void setPassword(String password) {
this.password = password;
}
答案 1 :(得分:4)
如果您不想手动创建getter / setter(例如,getter / setter),也可以采用这种方式。 使用龙目岛的@Data时)
@JsonProperty(access = Access.WRITE_ONLY)
private String password;
答案 2 :(得分:1)
我认为您应该使用DTO Pattern来设置/更改密码。
答案 3 :(得分:0)
就我而言,它有助于这样做:
@JsonProperty
private String password;
@JsonIgnore
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
答案 4 :(得分:0)
尝试使用@JsonProperty 的访问属性,如下所示。 这将避免反序列化,但由于提供了写访问权限,因此可以保存密码。
@JsonProperty(access = Access.WRITE_ONLY)
@Column(name = "encrypted_password")
private String password;
访问设置意味着该属性只能作为反序列化的一部分写入(设置)(使用“setter”方法,或分配给Field,或作为Creator参数传递),但不会被读取(get)以进行序列化,即属性的值不包含在序列化中。