add 增加邮箱与银行卡脱敏策略 并应用到 SysUser

This commit is contained in:
疯狂的狮子li 2021-12-28 12:03:00 +08:00
parent 51b19fcff4
commit 45e6accd2a
3 changed files with 47 additions and 12 deletions

View File

@ -3,7 +3,9 @@ package com.ruoyi.common.core.domain.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruoyi.common.annotation.Sensitive;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.enums.SensitiveStrategy;
import com.ruoyi.common.xss.Xss; import com.ruoyi.common.xss.Xss;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
@ -65,6 +67,7 @@ public class SysUser extends BaseEntity {
/** /**
* 用户邮箱 * 用户邮箱
*/ */
@Sensitive(strategy = SensitiveStrategy.EMAIL)
@ApiModelProperty(value = "用户邮箱") @ApiModelProperty(value = "用户邮箱")
@Email(message = "邮箱格式不正确") @Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
@ -73,6 +76,7 @@ public class SysUser extends BaseEntity {
/** /**
* 手机号码 * 手机号码
*/ */
@Sensitive(strategy = SensitiveStrategy.PHONE)
@ApiModelProperty(value = "手机号码") @ApiModelProperty(value = "手机号码")
private String phonenumber; private String phonenumber;

View File

@ -1,31 +1,48 @@
package com.ruoyi.common.enums; package com.ruoyi.common.enums;
import cn.hutool.core.util.DesensitizedUtil; import cn.hutool.core.util.DesensitizedUtil;
import lombok.AllArgsConstructor;
import java.util.function.Function; import java.util.function.Function;
/** /**
* 脱敏策略 * 脱敏策略
* @author Yjoioooo *
* @author Yjoioooo
* @version 3.6.0
*/ */
@AllArgsConstructor
public enum SensitiveStrategy { public enum SensitiveStrategy {
/** 身份证脱敏 */ /**
* 身份证脱敏
*/
ID_CARD(s -> DesensitizedUtil.idCardNum(s, 3, 4)), ID_CARD(s -> DesensitizedUtil.idCardNum(s, 3, 4)),
/** 手机号脱敏 */ /**
* 手机号脱敏
*/
PHONE(DesensitizedUtil::mobilePhone), PHONE(DesensitizedUtil::mobilePhone),
/** 地址脱敏 */ /**
ADDRESS(s -> DesensitizedUtil.address(s, 8)); * 地址脱敏
*/
ADDRESS(s -> DesensitizedUtil.address(s, 8)),
/**
* 邮箱脱敏
*/
EMAIL(DesensitizedUtil::email),
/**
* 银行卡
*/
BANK_CARD(DesensitizedUtil::bankCard);
//可自行添加其他脱敏策略 //可自行添加其他脱敏策略
private final Function<String, String> desensitizer; private final Function<String, String> desensitizer;
SensitiveStrategy(Function<String, String> desensitizer) {
this.desensitizer = desensitizer;
}
public Function<String, String> desensitizer() { public Function<String, String> desensitizer() {
return desensitizer; return desensitizer;
} }

View File

@ -34,9 +34,11 @@ public class TestSensitiveController extends BaseController {
@GetMapping("/test") @GetMapping("/test")
public AjaxResult<TestSensitive> test() { public AjaxResult<TestSensitive> test() {
TestSensitive testSensitive = new TestSensitive() TestSensitive testSensitive = new TestSensitive()
.setIdCard("3333199910101212") .setIdCard("210397198608215431")
.setPhone("18888888888") .setPhone("17640125371")
.setAddress("北京市朝阳区某某四合院1203室"); .setAddress("北京市朝阳区某某四合院1203室")
.setEmail("17640125371@163.com")
.setBankCard("6226456952351452853");
return AjaxResult.success(testSensitive); return AjaxResult.success(testSensitive);
} }
@ -62,6 +64,18 @@ public class TestSensitiveController extends BaseController {
@Sensitive(strategy = SensitiveStrategy.ADDRESS) @Sensitive(strategy = SensitiveStrategy.ADDRESS)
private String address; private String address;
/**
* 邮箱
*/
@Sensitive(strategy = SensitiveStrategy.EMAIL)
private String email;
/**
* 银行卡
*/
@Sensitive(strategy = SensitiveStrategy.BANK_CARD)
private String bankCard;
} }
} }