Spring 如何隐藏JPA的属性
当我从UI发出请求时,我得到了这种格式Spring 如何隐藏JPA的属性,spring,jpa,Spring,Jpa,当我从UI发出请求时,我得到了这种格式 {id: 1, name: "uno", password: "uno", email: "uno"} 我不想得到密码 @Entity @Table(name = "User") public class User implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; @Column(
{id: 1, name: "uno", password: "uno", email: "uno"}
我不想得到密码
@Entity
@Table(name = "User")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "name")
private String name;
@Column(name = "password")
private String password;
@Column(unique = true, name = "email")
private String email;
在JSON中隐藏属性与JPA无关。相反,您应该配置如何使用底层JSON库
例如,对于
Jackson
,有很多方法可以配置如何将对象序列化为JSON。默认情况下,它将序列化所有公共getter。如果您现在依赖此行为,您可以在getPassword()
中注释@JsonIgnore
,甚至在不需要获取密码的情况下删除它。这个答案显然是正确的,但考虑到涉及敏感数据,我想补充一点,OP最好在数据访问层上实际处理这个问题(即防止密码加载到内存中,而不是在JSON序列化时丢弃密码)。我不知道OP实际上想做什么。但是,如果他只是想阻止将其加载到内存中,那么我不知道OP为什么认为他有困难,因为他可以简单地从用户对象中删除密码字段。我猜测OP可能需要在某些情况下将密码加载到内存中,同时在向UI显示时也希望隐藏密码。“我猜测OP可能需要在某些情况下将密码加载到内存中”-我的观点是OP可能希望在所有其他情况下防止密码加载到内存中。我也不知道OP想要实现什么(这就是为什么我说你的答案没有错),但我觉得最好让OP注意到,他可能使用@JsonIgnore
方法存在安全漏洞