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中国教育管理中心)#spring认证#

(0)

相关推荐

  • springboot整合spring-security实现认证授权

    springboot整合spring-security实现认证授权

  • Spring Data Commons对象映射基础

    原标题:Spring认证|Spring Data Commons对象映射基础 本节涵盖 Spring Data 对象映射.对象创建.字段和属性访问.可变性和不变性的基础知识.请注意,本节仅适用于不使用 ...

  • Spring Data Commons 示例查询

    原标题:Spring认证|Spring Data Commons 示例查询 6.1. 介绍 本章介绍了 Query by Example 并解释了如何使用它. 示例查询 (QBE) 是一种用户友好的查 ...

  • Solr和Spring Data Solr

    一.Solr概述与安装 1.Solr简介 Solr是一个开源搜索平台,用于构建搜索应用程序. 它建立在Lucene(全文搜索引擎)之上. Solr是企业级的,快速的和高度可扩展的.Solr可以和Had ...

  • 什么是Spring Data?

    Spring Data 的委托是为数据访问提供熟悉且符合 Spring 的编程模型,同时仍保留着相关数据存储的特殊特征. 它使使用数据访问技术.关系和非关系数据库.map-reduce 框架和基于云的 ...

  • Spring Data Elasticsearch的使用

    最近在项目开发过程中发现项目接口调用日志表存在一定的问题,为了记录项目中所有的接口调用数据专门用了一个表来存储请求接口的报文信息,一直以来也没出现什么问题,上次我在和外部系统对接时发现,该接口返回的数 ...

  • Spring Data JDBC - 如何使用自定义 ID 生成

    原标题:Spring认证|Spring Data JDBC-如何使用自定义ID生成 这是关于如何解决使用 Spring Data JDBC 时可能遇到的各种挑战的系列文章的第一篇. 如果你不了解 Sp ...

  • Spring Data JDBC、引用和聚合

    之前的博客文章中,我.描述了如何设置和使用 Spring Data JDBC.我还描述了使 Spring Data 原标题:Spring认证|Spring Data JDBC.引用和聚合 JDBC 比 ...

  • 使用 Spring Data Repositories(中)

    原标题:Spring认证|使用 Spring Data Repositories(中)来源:(Spring中国教育管理中心) 4.4.5. 限制查询结果 您可以使用first或top关键字来限制查询方 ...

  • 使用 Spring Data Repositories(下)

    原标题:Spring认证|使用 Spring Data Repositories(下)来源:(#spring认证#Spring中国教育管理中心) 4.5.2. Java配置 您还可以通过@Enable ...