成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java 日志脫敏框架 sensitive-v0.0.4 系統(tǒng)內(nèi)置常見(jiàn)注解,支持自定義注解

cheng10 / 3080人閱讀

摘要:項(xiàng)目介紹日志脫敏是常見(jiàn)的安全需求。常見(jiàn)的脫敏內(nèi)置方案。支持用戶自定義注解。自定義注解導(dǎo)入自定義注解新增功能。策略優(yōu)先級(jí)優(yōu)先生效,然后是系統(tǒng)內(nèi)置注解,最后是用戶自定義注解。讓這些的密碼不進(jìn)行脫敏定義測(cè)試對(duì)象定義一個(gè)使用自定義注解的對(duì)象。

項(xiàng)目介紹

日志脫敏是常見(jiàn)的安全需求。普通的基于工具類方法的方式,對(duì)代碼的入侵性太強(qiáng)。編寫起來(lái)又特別麻煩。

本項(xiàng)目提供基于注解的方式,并且內(nèi)置了常見(jiàn)的脫敏方式,便于開(kāi)發(fā)。

特性

基于注解的日志脫敏。

可以自定義策略實(shí)現(xiàn),策略生效條件。

常見(jiàn)的脫敏內(nèi)置方案。

java 深拷貝,且原始對(duì)象不用實(shí)現(xiàn)任何接口。

支持用戶自定義注解。

自定義注解 maven 導(dǎo)入

    com.github.houbb
    sensitive-core
    0.0.4
自定義注解

v0.0.4 新增功能。允許功能自定義條件注解和策略注解。

案例 自定義注解

策略脫敏

/**
 * 自定義密碼脫敏策略
 * @author binbin.hou
 * date 2019/1/17
 * @since 0.0.4
 */
@Inherited
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@SensitiveStrategy(CustomPasswordStrategy.class)
public @interface SensitiveCustomPasswordStrategy {
}

脫敏生效條件

/**
 * 自定義密碼脫敏策略生效條件
 * @author binbin.hou
 * date 2019/1/17
 * @since 0.0.4
 */
@Inherited
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@SensitiveCondition(ConditionFooPassword.class)
public @interface SensitiveCustomPasswordCondition{
}

TIPS

@SensitiveStrategy 策略多帶帶使用的時(shí)候,默認(rèn)是生效的。

如果有 @SensitiveCondition 注解,則只有當(dāng)條件滿足時(shí),才會(huì)執(zhí)行脫敏策略。

@SensitiveCondition 只會(huì)對(duì)系統(tǒng)內(nèi)置注解和自定義注解生效,因?yàn)?@Sensitive 有屬于自己的策略生效條件。

策略優(yōu)先級(jí)

@Sensitive 優(yōu)先生效,然后是系統(tǒng)內(nèi)置注解,最后是用戶自定義注解。

對(duì)應(yīng)的實(shí)現(xiàn)

兩個(gè)元注解 @SensitiveStrategy@SensitiveCondition 分別指定了對(duì)應(yīng)的實(shí)現(xiàn)。

CustomPasswordStrategy.java

public class CustomPasswordStrategy implements IStrategy {

    @Override
    public Object des(Object original, IContext context) {
        return "**********************";
    }

}

ConditionFooPassword.java

/**
 * 讓這些 123456 的密碼不進(jìn)行脫敏
 * @author binbin.hou
 * date 2019/1/2
 * @since 0.0.1
 */
public class ConditionFooPassword implements ICondition {
    @Override
    public boolean valid(IContext context) {
        try {
            Field field = context.getCurrentField();
            final Object currentObj = context.getCurrentObject();
            final String name = (String) field.get(currentObj);
            return !name.equals("123456");
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        }
    }

}
定義測(cè)試對(duì)象

定義一個(gè)使用自定義注解的對(duì)象。

public class CustomPasswordModel {

    @SensitiveCustomPasswordCondition
    @SensitiveCustomPasswordStrategy
    private String password;

    @SensitiveCustomPasswordCondition
    @SensitiveStrategyPassword
    private String fooPassword;
    
    //其他方法
}
測(cè)試
/**
 * 自定義注解測(cè)試
 */
@Test
public void customAnnotationTest() {
    final String originalStr = "CustomPasswordModel{password="hello", fooPassword="123456"}";
    final String sensitiveStr = "CustomPasswordModel{password="**********************", fooPassword="123456"}";
    CustomPasswordModel model = buildCustomPasswordModel();
    Assert.assertEquals(originalStr, model.toString());

    CustomPasswordModel sensitive = SensitiveUtil.desCopy(model);
    Assert.assertEquals(sensitiveStr, sensitive.toString());
    Assert.assertEquals(originalStr, model.toString());
}

構(gòu)建對(duì)象的方法如下:

/**
 * 構(gòu)建自定義密碼對(duì)象
 * @return 對(duì)象
 */
private CustomPasswordModel buildCustomPasswordModel(){
    CustomPasswordModel model = new CustomPasswordModel();
    model.setPassword("hello");
    model.setFooPassword("123456");
    return model;
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73063.html

相關(guān)文章

  • java 日志脫敏框架 sensitive-新版本0.0.2-深度拷貝,屬性為對(duì)象和集合的支持

    摘要:項(xiàng)目介紹日志脫敏是常見(jiàn)的安全需求。特性基于注解的日志脫敏可以自定義策略實(shí)現(xiàn),策略生效條件常見(jiàn)的脫敏內(nèi)置方案深拷貝,且原始對(duì)象不用實(shí)現(xiàn)任何接口。放在集合屬性上,且屬性為普通對(duì)象作為演示,集合中為普通的字符串。 項(xiàng)目介紹 日志脫敏是常見(jiàn)的安全需求。普通的基于工具類方法的方式,對(duì)代碼的入侵性太強(qiáng)。編寫起來(lái)又特別麻煩。 本項(xiàng)目提供基于注解的方式,并且內(nèi)置了常見(jiàn)的脫敏方式,便于開(kāi)發(fā)。 用戶也可以...

    plokmju88 評(píng)論0 收藏0
  • Java注解-元數(shù)據(jù)、注解分類、內(nèi)置注解定義注解

    摘要:注解有以下幾個(gè)知識(shí)點(diǎn)元數(shù)據(jù)注解的分類內(nèi)置注解自定義注解注解處理器本文先介紹前面?zhèn)€知識(shí)點(diǎn)元數(shù)據(jù)注解的分類內(nèi)置注解自定義注解。注解相當(dāng)于是一種嵌入在程序中的元數(shù)據(jù),可以使用注解解析工具或編譯器對(duì)其進(jìn)行解析,也可以指定注解在編譯期或運(yùn)行期有效。 大家好,我是樂(lè)字節(jié)的小樂(lè),上次說(shuō)過(guò)了Java多態(tài)的6大特性|樂(lè)字節(jié),接下來(lái)我們來(lái)看看Java編程里的注解。showImg(https://segme...

    Yujiaao 評(píng)論0 收藏0
  • Java 總結(jié)

    摘要:中的詳解必修個(gè)多線程問(wèn)題總結(jié)個(gè)多線程問(wèn)題總結(jié)有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升開(kāi)源的運(yùn)行原理從虛擬機(jī)工作流程看運(yùn)行原理。 自己實(shí)現(xiàn)集合框架 (三): 單鏈表的實(shí)現(xiàn) 自己實(shí)現(xiàn)集合框架 (三): 單鏈表的實(shí)現(xiàn) 基于 POI 封裝 ExcelUtil 精簡(jiǎn)的 Excel 導(dǎo)入導(dǎo)出 由于 poi 本身只是針對(duì)于 ...

    caspar 評(píng)論0 收藏0
  • spring retry, guava retrying 的整合-sisyphus java 重試框

    摘要:特性支持過(guò)程式編程基于字節(jié)碼的代理重試基于注解的重試,允許自定義注解無(wú)縫接入接口與注解的統(tǒng)一解決與中的不足之處設(shè)計(jì)目的綜合了和的優(yōu)勢(shì)?;谧止?jié)碼實(shí)現(xiàn)的代理重試,可以不依賴。提供基于代碼模式字節(jié)碼增強(qiáng)實(shí)現(xiàn)的方式。 Sisyphus 支持過(guò)程式編程和注解編程的 java 重試框架。 特性 支持 fluent 過(guò)程式編程 基于字節(jié)碼的代理重試 基于注解的重試,允許自定義注解 無(wú)縫接入 sp...

    宋華 評(píng)論0 收藏0
  • 15個(gè)經(jīng)典的Spring面試常見(jiàn)問(wèn)題

    摘要:我自己總結(jié)的學(xué)習(xí)的系統(tǒng)知識(shí)點(diǎn)以及面試問(wèn)題,已經(jīng)開(kāi)源,目前已經(jīng)。目前最新的版本中模塊的組件已經(jīng)被廢棄掉,同時(shí)增加了用于異步響應(yīng)式處理的組件。每一次請(qǐng)求都會(huì)產(chǎn)生一個(gè)新的,該僅在當(dāng)前內(nèi)有效。顯而易見(jiàn),這種模式存在很多問(wèn)題。 我自己總結(jié)的Java學(xué)習(xí)的系統(tǒng)知識(shí)點(diǎn)以及面試問(wèn)題,已經(jīng)開(kāi)源,目前已經(jīng) 41k+ Star。會(huì)一直完善下去,歡迎建議和指導(dǎo),同時(shí)也歡迎Star: https://githu...

    sarva 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<