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 Boot整合Spring Cloud Commons進行公共元件管理Spring BootCloud元件
- Spring Data JpaSpring
- Spring Data JPA之Spring Data JPA快速入門(三)Spring
- Spring Boot:整合Spring Data JPASpring Boot
- Spring Data Jpa APISpringAPI
- Spring Data 教程 - RedisSpringRedis
- 使用 Spring Data RepositoriesSpring
- Spring Data JPA 的使用Spring
- Spring Data JDBC介紹SpringJDBC
- Spring Data JPA中TransactionInterceptorSpring
- Spring Data JPA中ConfigurableTransactionManagerSpring
- spring data jpa查詢Spring
- SpringBoot整合Spring Data JPASpring Boot
- Spring Data JPA:解析SimpleJpaRepositorySpring
- 什麼是Spring Data?Spring
- 使用 Spring Data Repositories(下)Spring
- Spring Data JPA:解析CriteriaQuerySpring
- Spring Data JPA:解析CriteriaBuilderSpringUI
- spring cloud微服務分散式雲架構-Commons 普通抽象SpringCloud微服務分散式架構抽象
- DM7審計之物件審計物件
- Spring Boot (五)Spring Data JPA 操作 MySQL 8Spring BootMySql
- 【Spring技術棧】初識Spring Data JPASpring
- Spring Data JPA REST Query CriteriaSpringREST
- spring-data-mongodb常用操作SpringMongoDB
- Spring Data Redis 最佳實踐!SpringRedis
- Spring Data JPA簡單使用Spring
- Spring Data Redis Stream的使用SpringRedis
- Spring Data JDBC參考文件SpringJDBC
- Spring Data JPA原始碼案例Spring原始碼
- Spring Data Moore有哪些新功能? - spring.ioSpring
- DM7審計之語句序列審計
- DM7審計之語句級審計
- spring data mongo @Field 失效問題SpringGo
- spring-session-data-redis共享方案SpringSessionRedis
- Spring Data JPA中事務ReactiveTransactionManagerSpringReact
- usering mongotemplate bases on spring-Data-mongoGoSpring
- 一文搞定 Spring Data JPASpring