Spring Data Commons审计

简介: Spring认证|Spring Data Commons审计

原标题: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 您在UserDetailsS​ervice 实现中创建的自定义实例。我们模仿您通过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 您在UserDetailsS​​ervice 实现中创建的自定义实例。我们模仿您通过UserDetails 实现公开域用户,但根据发现的身份验证,您也可以从任何地方查找它。

内容来源:(Spring中国教育管理中心)

相关文章
|
2月前
|
存储 运维 Java
使用 @Audited 增强Spring Boot 应用程序的数据审计能力
【7月更文挑战第19天】在Spring Boot应用中使用`@Audited`增强数据审计能力涉及在相关实体或方法上添加该注解以标记需审计的操作。例如,在`User`类的`updateUser`方法上使用`@Audited`可记录更新操作的详情。此外,还需配置审计日志存储方式(如数据库)及事件过滤规则等。这有助于满足合规性需求、故障排查及数据分析,对数据安全和完整至关重要。
|
1月前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
2月前
|
Java Spring 数据库
怎样动动手指就能实现数据操作?Spring Data JPA背后的魔法揭秘
【8月更文挑战第31天】在Java开发中,数据库交互至关重要。传统的JDBC操作繁琐且难维护,而Spring Data JPA作为集成JPA的数据访问层解决方案,提供了CRUD等通用操作接口,显著减少代码量。通过继承`JpaRepository`,开发者能轻松实现数据的增删改查,甚至复杂查询和分页也不再困难。本文将通过示例详细介绍如何利用Spring Data JPA简化数据访问层的开发,提升代码质量和可维护性。
30 0
|
3月前
|
NoSQL Java API
Spring Data MongoDB 使用
Spring Data MongoDB 使用
127 1
|
2月前
|
存储 Java 数据库
|
2月前
|
存储 Java API
|
2月前
|
Java 数据库连接 数据库
Spring Data JPA 与 Hibernate 之区别
【8月更文挑战第21天】
38 0
|
2月前
|
存储 Java 数据库
使用 @Audited 增强Spring Boot 应用程序的数据审计能力
【8月更文挑战第3天】在Spring Boot应用中,`@Audited`注解能显著提升数据审计能力。它可用于标记需审计的方法或类,记录操作用户、时间和类型等信息。此注解支持与Logback或Log4j等日志框架集成,亦可将审计信息存入数据库,便于后续分析。此外,还支持自定义审计处理器以满足特定需求。
111 0
|
4月前
|
安全 Java API
Java一分钟之-Spring Data REST:创建RESTful服务
【6月更文挑战第15天】Spring Data REST让基于Spring Data的项目轻松创建REST API,免去大量控制器代码。通过自动HTTP映射和链接生成,简化CRUD操作。文章涵盖启用REST、配置仓库、自定义端点、解决过度暴露、缺失逻辑和安全性问题,提供代码示例,如自定义Repository、投影和安全配置,强调在利用其便利性时注意潜在挑战。
60 5
|
3月前
|
存储 Java 关系型数据库
Spring Data与多数据源配置
Spring Data与多数据源配置