From b207fe04226e921e2b834a8162ef38947de431b4 Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期一, 28 九月 2026 17:45:09 +0800
Subject: [PATCH] 注释优化
---
cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java | 22 ++++++++++++++++------
1 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java b/cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java
index 0565e3c..d19eeef 100644
--- a/cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java
+++ b/cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java
@@ -7,6 +7,9 @@
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@@ -15,13 +18,17 @@
import java.util.Map;
/**
- * Response boundary protection for personal phone and identity-card data.
- * It is deliberately based on field names so it also covers ad-hoc Maps
- * produced by reporting APIs.
+ * 手机号和身份证号等个人敏感数据的响应边界保护。
+ * 基于字段名进行识别,因此也可覆盖报表接口临时生成的 Map 数据。
*/
@ControllerAdvice
public class SensitiveDataMaskingAdvice implements ResponseBodyAdvice<Object> {
private static final String INTERNAL_SENSITIVE_ACCESS = "X-Internal-Sensitive-Access";
+ /** 客户端接收原始数据、仅在展示时脱敏的 APP 接口。 */
+ private static final Set<String> APP_UNMASKED_PATHS = new HashSet<String>(Arrays.asList(
+ "/base/exploreWP/storeDetail",
+ "/base/exploreWP/customerList"
+ ));
private final HttpServletRequest request;
@@ -31,9 +38,12 @@
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
- // The only unmasked account response is the management-only endpoint.
- return !(request.getRequestURI().startsWith("/internal/sensitive/")
- && "true".equalsIgnoreCase(request.getHeader(INTERNAL_SENSITIVE_ACCESS)));
+ String path = request.getRequestURI();
+ // 内部管理调用必须携带敏感数据访问请求头。明确列出的两个 APP 接口返回原始数据,
+ // 由客户端在展示时脱敏;其他账户服务响应均进行脱敏。
+ return !(APP_UNMASKED_PATHS.contains(path)
+ || (path.startsWith("/internal/sensitive/")
+ && "true".equalsIgnoreCase(request.getHeader(INTERNAL_SENSITIVE_ACCESS))));
}
@Override
--
Gitblit v1.7.1