Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何隐藏JPA的属性_Spring_Jpa - Fatal编程技术网

Spring 如何隐藏JPA的属性

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(

当我从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(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
方法存在安全漏洞