【问题标题】:Mask SSN in spring data rest response body在春季数据休息响应正文中屏蔽 SSN
【发布时间】:2022-01-26 22:57:53
【问题描述】:
我正在使用 Spring REST 创建一个休息服务。在身份识别等少数服务中,我需要屏蔽 SSN 作为响应。 (不使用JSON忽略或JsonProperty)
如果客户端在请求正文中发送 SSN,则应屏蔽 SSN 的响应正文,如下所示。 (例如,邮递员请求正文和响应)
SSN 应在响应正文中屏蔽为 xxx-xxxx-1235。
spring data rest中有什么方法可以实现这一点吗?或者任何可以在返回 ResponseEntity 时应用于所有实体/控制器的通用解决方案(如拦截器)?
【问题讨论】:
标签:
spring
spring-boot
spring-data-rest
masking
【解决方案1】:
我相信jackson @JsonGetter 可以用于这种情况。
@JsonGetter("ssn")
public String getCensoredSsn() {
return Something.CensorSsn(ssn);
}
【解决方案2】:
我可以通过两种方式做到这一点。首先是覆盖所需字段的 get 方法并在此处将其屏蔽。另一种方法是结合使用创建 CustomSerializer 和在类级别使用 @JsonSerialize(using=CustomSerialzier) 注释。
公共类 CustomSerializer 扩展了 StdSerializer