如何解决有没有办法保留一个字段,但是在执行 GET 时,该字段没有序列化
所以,我想保留一个带有 password
字段的用户,但是我不想显示返回值
password
。不知何故,我只想序列化该字段以保持不变,但是在 findById(id)
或 findAll()
不得显示此字段。
用户将填写的字段:
{
"firstName" : "foo","lastName" : "bar","password" : "MyNewPass","email": "john@doe.net"
}
我将保留的数据:
{
"id": "1","firstName" : "foo","email": "john@doe.net","password" : "$2y$12$0bpN8aTD5WebsGWoXK90yuJcDczNmUIAOduWXoHKfEw7GOidpQX1u","createdDate": "01/01/2077","active": "false"
}
我希望用户(前端)看到的响应:
{
"id": "1","active": "false"
}
如果我删除 getPassword()
,我将无法验证登录会话,因为我需要在内部检查密码哈希。我可以创建 3 个不同的类,但会有很多重复的代码。
对于这种情况有更好的方法吗?遗产?某种注释?一个接口?我丢东西了?
我正在处理的当前 Repo:customer-service
解决方法
您可能有一个看起来像这样的实体:
@Entity
public class User {
private Long id;
private String firstName;
private String lastName;
private String password;
private LocalDate createdDate;
private String email;
private boolean active;
// Getters and setters
}
您可以将此实体映射到专门用于 Web 请求的 User 类:
public class UserResponse {
private Long id;
private String firstName;
private String lastName;
private String email;
private boolean active;
}
您可以手动将 User 映射到 UserResponse,也可以使用 MapStruct 之类的映射框架。
这比添加可能为您完成工作的注释要干净得多。 Entity 类应用于持久性,不应被其他职责所污染。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。