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