Spring Data Commons審計

Adobe國際認證發表於2021-09-29

原標題:Spring認證|Spring Data Commons審計

Spring Data Commons 審計

7.1.基本

Spring Data 提供了複雜的支援,以透明地跟蹤誰建立或更改了實體以及更改發生的時間。要從功能中獲益,您必須為實體類配置審計後設資料,這些後設資料可以使用註釋或通過實現介面來定義。此外,必須通過註解配置或 XML 配置來進行審計以註冊所需的基礎架構元件。有關配置示例,請參見特定於商店的部分。

僅跟蹤建立和修改日期的應用程式不需要AuditorAware。

7.1.1. 基於註釋的審計後設資料

我們提供 CreatedBy 並 LastModifiedBy 操作建立或實體修改的使用者,CreatedDate 並 LastModifiedDate 啟動更改的時間。

示例75.一個被審計的實體

類客戶{

由...製作

私人使用者使用者;

建立日期

私人即時 createdDate;

//...省略更多屬性

}

如您可以有選擇地註釋,具體可用於您要應用的資訊。進行更改時的註釋註釋可用於Joda-Time DateTime、舊版JavaDate 和所用日曆、JDK8 日期和時間以及或長。

審計後設資料特別需要存在於根級實體中,但可以新增到嵌入式實體中(使用者實際使用的儲存),如下面的截圖所示。

示例76. 審計嵌入實體中的後設資料

類客戶{

私有審計後設資料審計後設資料;

//...省略更多屬性

}

類審計後設資料{

由...製作

私人使用者使用者;

建立日期

私人即時 createdDate;

}

Spring Data Commons 審計

7.1.2. 基於介面的審計後設資料

如果您不想使用註釋來定義審計後設資料,您可以讓您的域類實現該可審計介面。它公開了所有審計屬性的設定方法。

7.1.3. 審計員意識

如果您使用@CreatedBy 或@LastModifiedBy,審計基礎結構需要以某種方式瞭解當前主體。為此,我們提供了一個AuditorAwareSPI 介面,您實現該介面以告知基礎設施當前與應用程式互動的使用者或系統是誰。泛型型別定義了用什麼型別註釋的屬性@CreatedBy或@LastModifiedBy必須是什麼型別。

下面示例顯示了使用 Spring SecurityAuthentication 物件的介面的實現:

例 77.AuditorAware 基於 Spring Security 的實現


SpringSecurityAuditorAware 實現了 AuditorAware {

@覆蓋

公共可選 getCurrentAuditor() {

返回 Optional.ofNullable(
SecurityContextHolder.getContext())

.map(SecurityContext::getAuthentication)

.filter(Authentication::isAuthenticated)

.map(認證::getPrincipal)

.map(User.class::cast);

}

}

Spring Data Commons 審計

該實現訪問Authentication Spring Security 提供的物件並查詢UserDetails 您在UserDetailsService 實現中建立的自定義例項。我們模仿您通過UserDetails 實現公開域使用者,但根據發現的身份驗證,您也可以從任何地方查詢它。

7.1.4. 反應式審計員

使用反應式基礎架構時,您可能希望使用上下文資訊來提供@CreatedBy提供@LastModifiedBy資訊。我們提供了一個ReactiveAuditorAwareSPI介面,您必須或實現該介面告知基礎設施當前與應用程式互動的使用者或系統是誰。泛型型別定義了用什麼型別註釋的屬性@CreatedBy或@LastModifiedBy必須是什麼型別。

下面示例顯示了使用響應式Spring SecurityAuthentication物件的介面實現:

Example 78.ReactiveAuditorAware 基於 Spring Security 的實現


SpringSecurityAuditorAware 實現 ReactiveAuditorAware {

@覆蓋

公共單聲道 getCurrentAuditor() {

返回
ReactiveSecurityContextHolder.getContext()

.map(SecurityContext::getAuthentication)

.filter(Authentication::isAuthenticated)

.map(認證::getPrincipal)

.map(User.class::cast);

}

}

Spring Data Commons 審計

該實現訪問Authentication Spring Security 提供的物件並查詢UserDetails 您在UserDetailsService 實現中建立的自定義例項。我們模仿您通過UserDetails 實現公開域使用者,但根據發現的身份驗證,您也可以從任何地方查詢它。

內容來源:(Spring中國教育管理中心)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69981720/viewspace-2794468/,如需轉載,請註明出處,否則將追究法律責任。

相關文章