@Jsonview过滤pojo和jackson安全漏洞
com.fasterxml.jackson.annotation.JsonView
@JsonView可以过滤pojo的属性,使Controller在返回json时候,pojo某些属性不返回,比如User的密码,一般是不返回的,就可以使用这个注解。
利用@Jsonview注解过滤pojo
com.fasterxml.jackson.annotation.JsonView
@JsonView可以过滤pojo的属性,使Controller在返回json时候,pojo某些属性不返回
1.在pojo字段添加@Jsonview
2.添加视图接口
@Getter
@Setter
@ToString
@TableName("project")
public class Project {
public interface ProjectBaseInfo{}
@TableId
@JsonView(ProjectBaseInfo.class)
private Integer id;
// 项目编码
@JsonView(ProjectBaseInfo.class)
private String projectNumber;
// 项目名称
@JsonView(ProjectBaseInfo.class)
private String projectName;
// 数量
@JsonView(ProjectDetailInfo.class)
private Integer count;
}
3.在Controller中调用
@GetMapping("getProjectList")
@ApiOperation("获取项目列表")
@JsonView(Project.ProjectBaseInfo.class)
public Results<List<Project>> getProjectList() {
List<Project> list = dtsService.getProjectList(DTS_TYPE);
return Results.ok(list);
}
关于jackson的安全漏洞
jackson开发方发布了修复公告建议用户更新到2.12.0+ 版本,同时后续将发布的版本也会加入该漏洞的修复措施。
升级jackson,参考
- 打开pom.xml, 在properties加入jackson.version
<properties>
<java.version>1.8</java.version>
<jackson.version>2.12.4</jackson.version>
</properties>
- 加入依赖
<!-- JSON工具类 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>