刘帅
2026-09-17 ffc385f566caf13755ff36f50beddd0221516543
feat&bug:隐私号放行
1个文件已添加
2个文件已修改
21 ■■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/AppUserDetailsVo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/privacy/UnmaskedSensitiveData.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/AppUserDetailsVo.java
@@ -1,6 +1,7 @@
package com.dsh.account.model.vo.userBenefitDetail;
import com.dsh.privacy.UnmaskedSensitiveData;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -16,6 +17,7 @@
    private String userName;
    @ApiModelProperty(value = "用户手机号")
    @UnmaskedSensitiveData
    private String userPhone;
    @ApiModelProperty(value = "用户性别")
cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java
@@ -69,7 +69,9 @@
                    field.setAccessible(true);
                    Object fieldValue = field.get(value);
                    int sensitive = sensitiveType(field.getName());
                    if (fieldValue instanceof String && sensitive != 0) field.set(value, maskText((String) fieldValue, sensitive));
                    if (fieldValue instanceof String && sensitive != 0 && !field.isAnnotationPresent(UnmaskedSensitiveData.class)) {
                        field.set(value, maskText((String) fieldValue, sensitive));
                    }
                    else mask(fieldValue, visited);
                } catch (IllegalAccessException ignored) { }
            }
cloud-server-account/src/main/java/com/dsh/privacy/UnmaskedSensitiveData.java
New file
@@ -0,0 +1,15 @@
package com.dsh.privacy;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * Allows a single response field to bypass sensitive-data masking.
 * Use only for endpoints that are authorised to return the original value.
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UnmaskedSensitiveData {
}