From 51b19fcff40978fa9dcfae920d50bf5681bb9c4a Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期二, 28 十二月 2021 11:51:01 +0800
Subject: [PATCH] update 优化 数据脱敏pr 使用接口提高扩展性
---
/dev/null | 35 -----------
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java | 83 +++++++++++++--------------
ruoyi-common/src/main/java/com/ruoyi/common/jackson/SensitiveJsonSerializer.java | 6 +
ruoyi-common/src/main/java/com/ruoyi/common/core/service/SensitiveService.java | 18 ++++++
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java | 26 ++++++++
5 files changed, 89 insertions(+), 79 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/SensitiveService.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/SensitiveService.java
new file mode 100644
index 0000000..7b27bb4
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/SensitiveService.java
@@ -0,0 +1,18 @@
+package com.ruoyi.common.core.service;
+
+/**
+ * 鑴辨晱鏈嶅姟
+ * 榛樿绠$悊鍛樹笉杩囨护
+ * 闇�鑷鏍规嵁涓氬姟閲嶅啓瀹炵幇
+ *
+ * @author Lion Li
+ * @version 3.6.0
+ */
+public interface SensitiveService {
+
+ /**
+ * 鏄惁鑴辨晱
+ */
+ boolean isSensitive();
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/jackson/SensitiveJsonSerializer.java b/ruoyi-common/src/main/java/com/ruoyi/common/jackson/SensitiveJsonSerializer.java
index 2b4fef4..39038ab 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/jackson/SensitiveJsonSerializer.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/jackson/SensitiveJsonSerializer.java
@@ -7,8 +7,9 @@
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.ruoyi.common.annotation.Sensitive;
+import com.ruoyi.common.core.service.SensitiveService;
import com.ruoyi.common.enums.SensitiveStrategy;
-import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
import java.io.IOException;
import java.util.Objects;
@@ -23,7 +24,8 @@
@Override
public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- if (SecurityUtils.isAdmin(SecurityUtils.getLoginUser().getUserId()) || SecurityUtils.getLoginUser().getMenuPermissions().contains("Sensitive")){
+ SensitiveService sensitiveService = SpringUtils.getBean(SensitiveService.class);
+ if (sensitiveService.isSensitive()){
gen.writeString(value);
} else {
gen.writeString(strategy.desensitizer().apply(value));
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java
index 30708cd..2458747 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java
@@ -1,63 +1,38 @@
package com.ruoyi.demo.controller;
-import cn.hutool.core.bean.BeanUtil;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Sensitive;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.PageQuery;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.core.validate.AddGroup;
-import com.ruoyi.common.core.validate.EditGroup;
-import com.ruoyi.common.core.validate.QueryGroup;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.excel.ExcelResult;
-import com.ruoyi.common.utils.ValidatorUtils;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.demo.domain.TestDemo;
-import com.ruoyi.demo.domain.TestSensitive;
-import com.ruoyi.demo.domain.bo.TestDemoBo;
-import com.ruoyi.demo.domain.bo.TestDemoImportVo;
-import com.ruoyi.demo.domain.vo.TestDemoVo;
-import com.ruoyi.demo.service.ITestDemoService;
-import io.swagger.annotations.*;
-import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
+import com.ruoyi.common.enums.SensitiveStrategy;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
/**
- * 娴嬭瘯鍗曡〃Controller
+ * 娴嬭瘯鏁版嵁鑴辨晱鎺у埗鍣�
*
+ * 榛樿绠$悊鍛樹笉杩囨护
+ * 闇�鑷鏍规嵁涓氬姟閲嶅啓瀹炵幇
+ *
+ * @see com.ruoyi.common.core.service.SensitiveService
* @author Lion Li
- * @date 2021-07-26
+ * @version 3.6.0
*/
-@Validated
@Api(value = "娴嬭瘯鏁版嵁鑴辨晱鎺у埗鍣�", tags = {"娴嬭瘯鏁版嵁鑴辨晱绠$悊"})
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/demo/sensitive")
public class TestSensitiveController extends BaseController {
- //榛樿涓篴dmin鐢ㄦ埛鍙婃嫢鏈塖ensitive鏉冮檺瀛楃鐢ㄦ埛涓嶅仛鑴辨晱
- //1.閰嶇疆鑿滃崟鍔犲叆鏉冮檺瀛楃涓篠ensitive鐨勬寜閽�
- //2.閰嶇疆闇�瑕佸厤闄ゆ暟鎹劚鏁忕殑瑙掕壊鍔犲叆Sensitive鏉冮檺
- //3.瀹炰綋绫讳笂鍔犱笂鏁版嵁鑴辨晱娉ㄨВ
/**
* 娴嬭瘯鏁版嵁鑴辨晱
*/
@ApiOperation("鏌ヨ娴嬭瘯鍗曡〃鍒楄〃")
- @GetMapping()
- public AjaxResult<TestSensitive> get() {
+ @GetMapping("/test")
+ public AjaxResult<TestSensitive> test() {
TestSensitive testSensitive = new TestSensitive()
.setIdCard("3333199910101212")
.setPhone("18888888888")
@@ -65,4 +40,28 @@
return AjaxResult.success(testSensitive);
}
+ @Data
+ @Accessors(chain = true)
+ static class TestSensitive {
+
+ /**
+ * 韬唤璇�
+ */
+ @Sensitive(strategy = SensitiveStrategy.ID_CARD)
+ private String idCard;
+
+ /**
+ * 鐢佃瘽
+ */
+ @Sensitive(strategy = SensitiveStrategy.PHONE)
+ private String phone;
+
+ /**
+ * 鍦板潃
+ */
+ @Sensitive(strategy = SensitiveStrategy.ADDRESS)
+ private String address;
+
+ }
+
}
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestSensitive.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestSensitive.java
deleted file mode 100644
index 1fbf6b3..0000000
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestSensitive.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.ruoyi.demo.domain;
-
-import com.baomidou.mybatisplus.annotation.*;
-import com.ruoyi.common.annotation.Sensitive;
-import com.ruoyi.common.core.domain.BaseEntity;
-import com.ruoyi.common.enums.SensitiveStrategy;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * 娴嬭瘯鍗曡〃瀵硅薄 test_demo
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Accessors(chain = true)
-public class TestSensitive extends BaseEntity {
-
- private static final long serialVersionUID=1L;
-
- /** 韬唤璇� */
- @Sensitive(strategy = SensitiveStrategy.ID_CARD)
- private String idCard;
-
- /** 鐢佃瘽 */
- @Sensitive(strategy = SensitiveStrategy.PHONE)
- private String phone;
-
- /** 鍦板潃 */
- @Sensitive(strategy = SensitiveStrategy.ADDRESS)
- private String address;
-}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java
new file mode 100644
index 0000000..242befb
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java
@@ -0,0 +1,26 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.common.core.service.SensitiveService;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鑴辨晱鏈嶅姟
+ * 榛樿绠$悊鍛樹笉杩囨护
+ * 闇�鑷鏍规嵁涓氬姟閲嶅啓瀹炵幇
+ *
+ * @author Lion Li
+ * @version 3.6.0
+ */
+@Service
+public class SysSensitiveServiceImpl implements SensitiveService {
+
+ /**
+ * 鏄惁鑴辨晱
+ */
+ @Override
+ public boolean isSensitive() {
+ return SecurityUtils.isAdmin(SecurityUtils.getUserId());
+ }
+
+}
--
Gitblit v1.9.3