springboot脫敏控件升級(jí)支持深度脫敏
正文
secure-ext-spring-boot-starter自發(fā)布以來受到廣大童鞋的關(guān)注,也收到各位同行朋友好的建議與需求,主要是常規(guī)情況下我們可能根據(jù)各自項(xiàng)目需求,列表頁會(huì)返回Page對(duì)象,Page中包含records(List類型),records又包含實(shí)際的Entity,因此大多數(shù)情況下返回的會(huì)是復(fù)雜對(duì)象。
因此經(jīng)過幾天的優(yōu)化調(diào)整,重新發(fā)布升級(jí)版,本次主要升級(jí)內(nèi)容:
1. 支持自動(dòng)化配置;
2. 支持深度脫敏,支持復(fù)雜對(duì)象,嵌套對(duì)象,對(duì)象內(nèi)多層級(jí)嵌套,自動(dòng)尋找返回值中嵌套對(duì)象包含的需脫敏的屬性;
最新版本
最新發(fā)布版已更新到mave中央倉庫:[Maven Central][1.0.3-release]
主要配置
sensitive: enable: true depth: false packages: com.mos.secure
說明:
| 屬性 | 默認(rèn)值 | 取值范圍 | 說明 |
|---|---|---|---|
| enable | true | true/false | 是否啟用脫敏,全局生效,默認(rèn)開啟 |
| depth | false | true/false | 是否啟用深度脫敏,為了性能考慮,默認(rèn)關(guān)閉 |
| packages | 空 | 字符串 | 包路徑,多個(gè)以英文逗號(hào)分隔 |
深度脫敏規(guī)則:
depth為true,且packages不為空,當(dāng)方法返回值嵌套的屬性包含在packages下,則自動(dòng)進(jìn)行脫敏。
示例
代碼略長,大致如下:方法返回Page,Page中的Records為List,List中存放實(shí)體類SensitiveEntity,SensitiveEntity又包含List<SensitiveSubEntity> SubEntities,SensitiveSubEntity中又包含了SensitiveGrandSonEntity,基本可以滿足我們大多數(shù)場(chǎng)景。
@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脫敏控件升級(jí)支持深度脫敏的詳細(xì)內(nèi)容,更多關(guān)于springboot脫敏控件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 升級(jí)springboot3.x踩坑記錄
- SpringBoot升級(jí)3.2報(bào)錯(cuò)Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.String的解決方案
- SpringBoot版本升級(jí)容易遇到的一些問題
- Springboot項(xiàng)目升級(jí)2.2.x升至2.7.x的示例代碼
- springboot將mybatis升級(jí)為mybatis-plus的實(shí)現(xiàn)
- SpringBoot Maven升級(jí)自帶的jar包版本問題
- SpringBoot2.6.x升級(jí)后循環(huán)依賴及Swagger無法使用問題
- SpringBoot3.3.0升級(jí)方案
相關(guān)文章
IDEA使用Git對(duì)分支進(jìn)行開發(fā)合并的全過程
本文介紹了在IDEA中使用Git進(jìn)行分支開發(fā)和合并的具體操作步驟,并分享了全局用戶名和郵箱的配置命令,幫助開發(fā)者規(guī)范高效地管理項(xiàng)目分支,需要的朋友可以參考下2025-10-10
Spring零基礎(chǔ)入門WebFlux響應(yīng)式編程
Spring 提供了兩個(gè)并行堆棧,一種是基于帶有 Spring MVC 和 Spring Data 結(jié)構(gòu)的 Servlet API,另一個(gè)是完全反應(yīng)式堆棧,它利用了 Spring WebFlux 和 Spring Data 的反應(yīng)式存儲(chǔ)庫,這篇文章主要介紹了Spring-webflux 響應(yīng)式編程,需要的朋友可以參考下2022-10-10
@ConfigurationProperties及@NestedConfigurationProperty的使用解讀
本文分享了如何在Spring Boot應(yīng)用中使用`@ConfigurationProperties`和`@NestedConfigurationProperty`進(jìn)行屬性綁定,提供了一個(gè)自定義配置的示例,并附帶個(gè)人經(jīng)驗(yàn)供參考2026-02-02
Spring復(fù)雜對(duì)象創(chuàng)建的方式小結(jié)
這篇文章主要介紹了Spring復(fù)雜對(duì)象創(chuàng)建的三種方式,現(xiàn)在使用Spring如何創(chuàng)建這種類型的對(duì)象?Spring中提供了三種方法來創(chuàng)建復(fù)雜對(duì)象,需要的朋友可以參考下2022-01-01
SpringBoot實(shí)現(xiàn)接口防刷的兩種方法
接口被刷指的是同一接口被頻繁調(diào)用,可能是由于以下原因?qū)е拢簮阂夤艉驼`操作或程序錯(cuò)誤,本文給大家介紹了SpringBoot實(shí)現(xiàn)接口防刷的兩種方法,并有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2024-06-06
Spring事務(wù)控制策略及@Transactional失效問題解決避坑
這篇文章主要為大家介紹了Spring事務(wù)控制策略及@Transactional失效問題解決避坑,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

