背景:
#个人学习记录
开发时,从数据库查询出来的信息需要进行脱敏返回给前端
实现:
方式一:hutool工具类实现
导包:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.0.6</version>
</dependency>
脱敏:
@GetMapping("/sensitive1")
public AjaxResult list(){
SysUser sysUser = userService.selectUserById(1L);
sysUser.setPhonenumber(DesensitizedUtil.mobilePhone(sysUser.getPhonenumber()));
sysUser.setPassword(DesensitizedUtil.password(sysUser.getPassword()));
sysUser.setEmail(DesensitizedUtil.email(sysUser.getEmail()));
return AjaxResult.success(sysUser);
}
方式二:使用注解实现
导包:
<dependency>
<groupId>io.gitee.chemors</groupId>
<artifactId>secure-ext-spring-boot-starter</artifactId>
<version>2.0.1-RELEASE</version>
</dependency>
实体类:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Study implements Serializable {
private static final long serialVersionUID = 1L;
private Integer sId;
private String sName;
private Double score;
@JsonSerialize(using = CustomDateSerializer.class)
private Long createTime;
@DesensitizationProp(SensitiveTypeEnum.PASSWORD)
private String password;
@DesensitizationProp(SensitiveTypeEnum.MOBILE_PHONE)
private String phone;
@DesensitizationProp(value = SensitiveTypeEnum.CUSTOM,preLength = 2,sufLength = 6)
private String email;
}
脱敏:
@Desensitization
@GetMapping("/sensitive2")
public AjaxResult list1(){
Study study = new Study().builder()
.password("tyerherngeieru")
.phone("15611111111")
.email("548954584@qq.com")
.build();
return AjaxResult.success(study);
}