pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/code4everything/util/commit/d0fe7e1d5260799803afb0a06b4892ea1f4b72e4

.css" /> handle sensitive data · code4everything/util@d0fe7e1 · GitHub
Skip to content
This repository was archived by the owner on Jan 24, 2019. It is now read-only.

Commit d0fe7e1

Browse files
committed
handle sensitive data
1 parent fa5c7ba commit d0fe7e1

File tree

4 files changed

+54
-4
lines changed

4 files changed

+54
-4
lines changed

src/main/java/com/zhazhapan/util/Checker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,6 @@ public static <T> CheckResult<T> checkBean(Object bean, Map<String, Object> map)
288288
for (Field field : fields) {
289289
FieldChecking checking = field.getAnnotation(FieldChecking.class);
290290
if (isNotNull(checking)) {
291-
field.setAccessible(true);
292291
String expression = checking.expression();
293292
Object value;
294293
try {
@@ -304,6 +303,7 @@ public static <T> CheckResult<T> checkBean(Object bean, Map<String, Object> map)
304303
// 设置默认值
305304
if (isNull(value) && isNotEmpty(checking.defaultValue())) {
306305
try {
306+
field.setAccessible(true);
307307
field.set(bean, checking.defaultValue());
308308
continue;
309309
} catch (IllegalAccessException e) {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.zhazhapan.util.annotation;
2+
3+
import java.lang.annotation.*;
4+
5+
/**
6+
* 此注解仅作用于 {@link String} 类型
7+
*
8+
* @author pantao
9+
* @since 2018/9/23
10+
*/
11+
@Documented
12+
@Target(ElementType.FIELD)
13+
@Retention(RetentionPolicy.RUNTIME)
14+
public @interface SensitiveData {}

src/main/java/com/zhazhapan/util/web/BaseController.java

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.zhazhapan.util.web;
22

3-
import com.zhazhapan.modules.constant.ValueConsts;
43
import com.zhazhapan.util.Checker;
4+
import com.zhazhapan.util.LoggerUtils;
5+
import com.zhazhapan.util.annotation.SensitiveData;
56
import com.zhazhapan.util.model.CheckResult;
67
import com.zhazhapan.util.model.ResultObject;
78

89
import javax.servlet.http.HttpServletRequest;
10+
import java.lang.reflect.Field;
911

1012
/**
1113
* @author pantao
@@ -17,12 +19,25 @@ public class BaseController {
1719

1820
private String token;
1921

22+
private boolean checkSensitiveData = false;
23+
24+
private String sensitiveDataTip = "******";
25+
2026
public BaseController() {}
2127

28+
public BaseController(boolean checkSensitiveData) {
29+
this.checkSensitiveData = checkSensitiveData;
30+
}
31+
2232
public BaseController(HttpServletRequest request) {
2333
this.request = request;
2434
}
2535

36+
public BaseController(HttpServletRequest request, boolean checkSensitiveData) {
37+
this.request = request;
38+
this.checkSensitiveData = checkSensitiveData;
39+
}
40+
2641
protected String getToken() {
2742
if (Checker.isEmpty(token)) {
2843
token = request.getHeader("token");
@@ -56,7 +71,21 @@ protected ResultObject parseResult(String okMsg, String errMsg, boolean isOk) {
5671

5772
protected <T> ResultObject<T> parseResult(String okMsg, String errMsg, T t) {
5873
if (Checker.isNull(t)) {
59-
return new ResultObject<>(400, errMsg, ValueConsts.ERROR_EN);
74+
return CheckResult.getErrorResult(errMsg);
75+
}
76+
if (checkSensitiveData) {
77+
Field[] fields = t.getClass().getDeclaredFields();
78+
try {
79+
for (Field field : fields) {
80+
SensitiveData sensitiveData = field.getAnnotation(SensitiveData.class);
81+
if (Checker.isNotNull(sensitiveData) && field.getType() == String.class) {
82+
field.setAccessible(true);
83+
field.set(t, sensitiveDataTip);
84+
}
85+
}
86+
} catch (IllegalAccessException e) {
87+
LoggerUtils.error("set sensitive data error: {}", e.getMessage());
88+
}
6089
}
6190
return new ResultObject<>(okMsg, t);
6291
}

src/test/java/com/zhazhapan/util/CommonsTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.zhazhapan.util.annotation.ToJsonString;
55
import com.zhazhapan.util.enums.JsonType;
66
import com.zhazhapan.util.model.ResultObject;
7+
import com.zhazhapan.util.model.TestBean;
78
import org.junit.Test;
89

910
import java.lang.reflect.InvocationTargetException;
@@ -18,9 +19,15 @@
1819
*/
1920
public class CommonsTest {
2021

22+
@Test
23+
public void testRefelect() throws NoSuchFieldException {
24+
assert TestBean.class.getField("username").getType() == String.class;
25+
assert TestBean.class.getField("age").getType() != String.class;
26+
}
27+
2128
@Test
2229
public void testResultObject() {
23-
ResultObject resultObject = new ResultObject();
30+
ResultObject<String> resultObject = new ResultObject<>();
2431
System.out.println(resultObject.setCode(200).setMessage("ok").setData("everything is ok"));
2532
}
2633

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy