Spring Data Commons審計
原標題:Spring認證|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;
}
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);
}
}
該實現訪問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);
}
}
該實現訪問Authentication Spring Security 提供的物件並查詢UserDetails 您在UserDetailsService 實現中建立的自定義例項。我們模仿您透過UserDetails 實現公開域使用者,但根據發現的身份驗證,您也可以從任何地方查詢它。
內容來源:(Spring中國教育管理中心)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69981720/viewspace-2794468/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CVE-2018-1273 Spring Data Commons 遠端命令執行漏洞復現Spring
- Spring Cloud Commons教程(一)普通抽象SpringCloud抽象
- Spring Boot整合Spring Cloud Commons進行公共元件管理Spring BootCloud元件
- Spring Data JpaSpring
- Spring Cloud Commons教程(三)忽略網路介面SpringCloud
- Spring Data JPA之Spring Data JPA快速入門(三)Spring
- Spring Boot:整合Spring Data JPASpring Boot
- Spring Data 教程 - RedisSpringRedis
- Spring Data Jpa APISpringAPI
- DM7審計之物件審計物件
- 【審計】標準資料庫審計資料庫
- Oracle審計Oracle
- audit審計
- 審計--audit
- oracle 審計Oracle
- Spring Data JPA 的使用Spring
- 什麼是Spring Data?Spring
- Spring Data JPA:解析CriteriaBuilderSpringUI
- Spring Data JPA:解析CriteriaQuerySpring
- Spring Data JDBC介紹SpringJDBC
- spring data jpa查詢Spring
- 使用 Spring Data RepositoriesSpring
- spring-session-data-redisSpringSessionRedis
- Spring Data Solr 教程: 排序SpringSolr排序
- 瞭解 Spring Data JPASpring
- spring data jpa 小結Spring
- Spring Data JPA中TransactionInterceptorSpring
- 再談審計專案審計質量(轉)
- Spring Boot with Spring Data JPA (1) - ConceptSpring Boot
- spring cloud微服務分散式雲架構-Commons 普通抽象SpringCloud微服務分散式架構抽象
- Oracle Database標準審計和細粒度審計功能OracleDatabase
- Spring Data Redis 最佳實踐!SpringRedis
- Spring Data JPA原始碼案例Spring原始碼
- 使用 Spring Data Repositories(下)Spring
- Spring Data JPA:解析SimpleJpaRepositorySpring
- spring-data-mongodb常用操作SpringMongoDB
- Spring Data JPA簡單使用Spring
- Spring Data JPA REST Query CriteriaSpringREST