疯狂的狮子li
2021-12-28 45e6accd2a58d4412fc38e27844c278f2273236b
add 增加邮箱与银行卡脱敏策略 并应用到 SysUser
已修改3个文件
59 ■■■■ 文件已修改
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/enums/SensitiveStrategy.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -3,7 +3,9 @@
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruoyi.common.annotation.Sensitive;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.enums.SensitiveStrategy;
import com.ruoyi.common.xss.Xss;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -65,6 +67,7 @@
    /**
     * 用户邮箱
     */
    @Sensitive(strategy = SensitiveStrategy.EMAIL)
    @ApiModelProperty(value = "用户邮箱")
    @Email(message = "邮箱格式不正确")
    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
@@ -73,6 +76,7 @@
    /**
     * 手机号码
     */
    @Sensitive(strategy = SensitiveStrategy.PHONE)
    @ApiModelProperty(value = "手机号码")
    private String phonenumber;
ruoyi-common/src/main/java/com/ruoyi/common/enums/SensitiveStrategy.java
@@ -1,30 +1,47 @@
package com.ruoyi.common.enums;
import cn.hutool.core.util.DesensitizedUtil;
import lombok.AllArgsConstructor;
import java.util.function.Function;
/**
 * 脱敏策略
 *  @author Yjoioooo
 *
 * @author Yjoioooo
 * @version 3.6.0
 */
@AllArgsConstructor
public enum SensitiveStrategy {
    /** 身份证脱敏 */
    /**
     * 身份证脱敏
     */
    ID_CARD(s -> DesensitizedUtil.idCardNum(s, 3, 4)),
    /** 手机号脱敏 */
    /**
     * 手机号脱敏
     */
    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;
    SensitiveStrategy(Function<String, String> desensitizer) {
        this.desensitizer = desensitizer;
    }
    public Function<String, String> desensitizer() {
        return desensitizer;
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java
@@ -34,9 +34,11 @@
    @GetMapping("/test")
    public AjaxResult<TestSensitive> test() {
        TestSensitive testSensitive = new TestSensitive()
            .setIdCard("3333199910101212")
            .setPhone("18888888888")
            .setAddress("北京市朝阳区某某四合院1203室");
            .setIdCard("210397198608215431")
            .setPhone("17640125371")
            .setAddress("北京市朝阳区某某四合院1203室")
            .setEmail("17640125371@163.com")
            .setBankCard("6226456952351452853");
        return AjaxResult.success(testSensitive);
    }
@@ -62,6 +64,18 @@
        @Sensitive(strategy = SensitiveStrategy.ADDRESS)
        private String address;
        /**
         * 邮箱
         */
        @Sensitive(strategy = SensitiveStrategy.EMAIL)
        private String email;
        /**
         * 银行卡
         */
        @Sensitive(strategy = SensitiveStrategy.BANK_CARD)
        private String bankCard;
    }
}