springboot脱敏控件升级支持深度脱敏

 更新时间:2023年07月09日 10:56:12   作者:小尘哥  
这篇文章主要为大家介绍了springboot脱敏控件升级支持深度脱敏,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

secure-ext-spring-boot-starter自发布以来受到广大童鞋的关注,也收到各位同行朋友好的建议与需求,主要是常规情况下我们可能根据各自项目需求,列表页会返回Page对象,Page中包含records(List类型),records又包含实际的Entity,因此大多数情况下返回的会是复杂对象。

因此经过几天的优化调整,重新发布升级版,本次主要升级内容:

1. 支持自动化配置;

2. 支持深度脱敏,支持复杂对象,嵌套对象,对象内多层级嵌套,自动寻找返回值中嵌套对象包含的需脱敏的属性;

最新版本

最新发布版已更新到mave中央仓库:[Maven Central][1.0.3-release]

主要配置

 sensitive:
   enable: true
   depth: false
   packages: com.mos.secure

说明:

属性默认值取值范围说明
enabletruetrue/false是否启用脱敏,全局生效,默认开启
depthfalsetrue/false是否启用深度脱敏,为了性能考虑,默认关闭
packages字符串包路径,多个以英文逗号分隔

深度脱敏规则:

depth为true,且packages不为空,当方法返回值嵌套的属性包含在packages下,则自动进行脱敏。

示例

代码略长,大致如下:方法返回Page,Page中的Records为List,List中存放实体类SensitiveEntity,SensitiveEntity又包含List<SensitiveSubEntity> SubEntities,SensitiveSubEntity中又包含了SensitiveGrandSonEntity,基本可以满足我们大多数场景。

     @Desensitization
     public Page page() {
         Page page = new Page();
         page.setCurrent(1);
         page.setSize(10);
         List<SensitiveEntity> list = new ArrayList<SensitiveEntity>();
         for (int i = 0; i < 5; i++) {
             SensitiveEntity sensitiveEntity = createEntity("1" + i, "樱木花道" + i, "15699996666" + i, "10101020000101000" + i);
             list.add(sensitiveEntity);
         }
         page.setRecords(list);
         return page;
     }
     private static SensitiveEntity createEntity(String i, String i1, String i2, String i3) {
         SensitiveEntity sensitiveEntity = new SensitiveEntity();
         sensitiveEntity.setId(i);
         sensitiveEntity.setName(i1);
         sensitiveEntity.setMobile(i2);
         sensitiveEntity.setIdCard(i3);
         List<SensitiveSubEntity> subEntities = new ArrayList<SensitiveSubEntity>();
         for (int j=0;j<3;j++){
             SensitiveSubEntity sensitiveSubEntity = new SensitiveSubEntity();
             sensitiveSubEntity.setAddress("addr--->"+j);
             SensitiveGrandSonEntity grandSonEntity = new SensitiveGrandSonEntity();
             grandSonEntity.setEmail("grq100296@163.com");
             sensitiveSubEntity.setSensitiveGrandSonEntity(grandSonEntity);
             subEntities.add(sensitiveSubEntity);
         }
         sensitiveEntity.setSubEntities(subEntities);
         return sensitiveEntity;
     }

SensitiveEntity

 @Data
 public class SensitiveEntity {
     private String id;
     @DesensitizationProp(value = SensitiveTypeEnum.CUSTOM,preLength = 1,sufLength = 5)
     private String name;
     @DesensitizationProp(SensitiveTypeEnum.MOBILE_PHONE)
     private String mobile;
     @DesensitizationProp(SensitiveTypeEnum.ID_CARD)
     private String idCard;
     private List<SensitiveSubEntity> subEntities;
 }

SensitiveSubEntity

 @Data
 public class SensitiveSubEntity {
     @DesensitizationProp(SensitiveTypeEnum.ADDRESS)
     private String address;
     private SensitiveGrandSonEntity sensitiveGrandSonEntity;
 }

SensitiveGrandSonEntity

 @Data
 public class SensitiveGrandSonEntity {
     @DesensitizationProp(value = SensitiveTypeEnum.EMAIL)
     private String email;
 }

示例代码

以上就是springboot脱敏控件升级支持深度脱敏的详细内容,更多关于springboot脱敏控件的资料请关注脚本之家其它相关文章!

相关文章

  • Java全面细致讲解final的使用

    Java全面细致讲解final的使用

    关于final关键字,它也是我们一个经常用的关键字,可以修饰在类上、或者修饰在变量、方法上,以此看来定义它的一些不可变性!像我们经常使用的String类中,它便是final来修饰的类,并且它的字符数组也是被final所修饰的。但是一些final的一些细节你真的了解过吗
    2022-05-05
  • docusaurus如何添加一个搜索功能

    docusaurus如何添加一个搜索功能

    这篇文章主要介绍了docusaurus如何添加一个搜索功能,本文通过实例图文相结合给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • IDEA使用Git对分支进行开发合并的全过程

    IDEA使用Git对分支进行开发合并的全过程

    本文介绍了在IDEA中使用Git进行分支开发和合并的具体操作步骤,并分享了全局用户名和邮箱的配置命令,帮助开发者规范高效地管理项目分支,需要的朋友可以参考下
    2025-10-10
  • Spring零基础入门WebFlux响应式编程

    Spring零基础入门WebFlux响应式编程

    Spring 提供了两个并行堆栈,一种是基于带有 Spring MVC 和 Spring Data 结构的 Servlet API,另一个是完全反应式堆栈,它利用了 Spring WebFlux 和 Spring Data 的反应式存储库,这篇文章主要介绍了Spring-webflux 响应式编程,需要的朋友可以参考下
    2022-10-10
  • 基于Java的正则表达式

    基于Java的正则表达式

    正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念
    2017-05-05
  • @ConfigurationProperties及@NestedConfigurationProperty的使用解读

    @ConfigurationProperties及@NestedConfigurationProperty的使用解读

    本文分享了如何在Spring Boot应用中使用`@ConfigurationProperties`和`@NestedConfigurationProperty`进行属性绑定,提供了一个自定义配置的示例,并附带个人经验供参考
    2026-02-02
  • Mybatis解决找不到get方法

    Mybatis解决找不到get方法

    这篇文章主要介绍了Mybatis解决找不到get方法问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Spring复杂对象创建的方式小结

    Spring复杂对象创建的方式小结

    这篇文章主要介绍了Spring复杂对象创建的三种方式,现在使用Spring如何创建这种类型的对象?Spring中提供了三种方法来创建复杂对象,需要的朋友可以参考下
    2022-01-01
  • SpringBoot实现接口防刷的两种方法

    SpringBoot实现接口防刷的两种方法

    接口被刷指的是同一接口被频繁调用,可能是由于以下原因导致:恶意攻击和误操作或程序错误,本文给大家介绍了SpringBoot实现接口防刷的两种方法,并有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-06-06
  • Spring事务控制策略及@Transactional失效问题解决避坑

    Spring事务控制策略及@Transactional失效问题解决避坑

    这篇文章主要为大家介绍了Spring事务控制策略及@Transactional失效问题解决避坑,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06

最新评论