Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Spring Data Commons审计

Spring Data Commons审计

原创
作者头像
IT胶囊
修改于 2021-09-29 09:26:40
修改于 2021-09-29 09:26:40
6830
举报
文章被收录于专栏:IT技能应用IT技能应用

原标题: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 您在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);

}

}

该实现访问Authentication Spring Security 提供的对象并查找UserDetails 您在UserDetailsS​​ervice 实现中创建的自定义实例。我们模仿您通过UserDetails 实现公开域用户,但根据发现的身份验证,您也可以从任何地方查找它。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Springboot之Security前后端分离登录
Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。 Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求 官方网站:https://spring.io/projects/spring-security#learn
海加尔金鹰
2020/09/16
9.5K3
Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据教程十
Spring Data 提供了复杂的支持,以透明地跟踪谁创建或更改了实体以及更改发生的时间。要从该功能中受益,您必须为实体类配备审计元数据,这些元数据可以使用注释或通过实现接口来定义。此外,必须通过 Annotation 配置或 XML 配置启用审计以注册所需的基础架构组件。有关配置示例,请参阅特定于商店的部分。
IT胶囊
2021/12/16
9200
Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据教程十
Spring Data JDBC参考文档四
原标题:Spring认证|Spring Data JDBC参考文档四 (内容来源:Spring中国教育管理中心)
IT胶囊
2021/10/12
1.2K0
Spring Data JDBC参考文档四
Spring认证中国教育管理中心-Spring Data R2DBC框架教程四
原标题:Spring认证中国教育管理中心-Spring Data R2DBC框架教程四(Spring中国教育管理中心)
IT胶囊
2021/12/07
7440
Spring认证中国教育管理中心-Spring Data R2DBC框架教程四
Spring认证中国教育管理中心-Spring Data JPA 参考文档七
原标题:Spring认证|Spring Data JPA 参考文档七(内容来源:Spring中国教育管理中心)
IT胶囊
2021/11/03
1.1K0
Spring认证中国教育管理中心-Spring Data JPA 参考文档七
Spring Data JPA 时间注解:@CreatedDate 和 @LastModifiedDate
选择 Spring Data JPA 框架开发时,常用在实体和字段上的注解有@Entity、@Id、@Column等。在表设计规范中,通常建议保留的有两个字段,一个是更新时间,一个是创建时间。Spring Data JPA 提供了相应的时间注解,只需要两步配置,就可以帮助开发者快速实现这方面的功能。
happyJared
2020/02/11
4.4K1
Spring Security入门(三): 基于自定义数据库查询的认证实战
在笔者的上一篇文章中Spring Security入门(二):基于内存的认证一文中有提到过Spring Security实现自定义数据库查询需要你实现UserDetailsService接口,并实现loadUserByUsername(String username)抽象方法。我们可以在UserDetailsService接口的实现类中注入数据库访问对象Dao,从而实现自定义数据库查询认证用户信息。下面在笔者的boot-demo实战项目中我们结合spring data jpa作为持久层技术来一步一步实现自定义数据库认证。
用户3587585
2022/09/21
1.5K0
Spring Security入门(三): 基于自定义数据库查询的认证实战
Spring Data JPA 自动保存操作人 操作时间等
有些业务数据需要对数据的创建人、创建时间、最后更新人和最后更新时间进行记录。如果使用Spring Data Jpa做数据新增或更新,可实现自动保存这些信息而不需要显式设置对应字段的值。实现自动记录上述信息主要有5个注解:
BUG弄潮儿
2022/03/08
1.6K0
权限框架 | 学会Spring Security权限框架,就是这么简单
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架(简单说是对访问权限进行控制 )。
码神联盟
2019/07/31
4.5K0
权限框架 | 学会Spring Security权限框架,就是这么简单
Spring Security 实战干货:SecurityContext相关的知识
欢迎阅读 Spring Security 实战干货[1] 系列文章 。在前两篇我们讲解了 基于配置[2] 和 基于注解[3] 来配置访问控制。今天我们来讲一下如何在接口访问中检索当前认证用户信息。我们先讲一下具体的场景。通常我们在认证后访问需要认证的资源时需要获取当前认证用户的信息。比如 “查询我的个人信息”。如果你直接在接口访问时显式的传入你的 UserID 肯定是不合适的。因为你认证通过后访问资源,系统是知道你是谁的。而且显式的暴露用户的检索接口也不安全。所以我们需要一个业务中可以检索当前认证用户的工具。接下来我们来看看 Spring Security 是如何解决这个痛点的。文末现金抽奖福利!
码农小胖哥
2019/12/10
1.6K0
【SpringSecurity系列(十二)】查看登录详情
《深入浅出Spring Security》一书已由清华大学出版社正式出版发行,感兴趣的小伙伴戳这里->->>深入浅出Spring Security,一本书学会 Spring Security。
江南一点雨
2021/05/11
8640
Spring Security 架构简介
Spring Framework 为开发 Java 应用程序提供了全面的基础架构支持。它包含了一些不错的功能,如 “依赖注入”,以及一些现成的模块:
阿宝哥
2019/11/05
2.8K0
【第九篇】SpringSecurity核心过滤器-SecurityContextPersistenceFilter
  首先来看看在spring-security-core中的SecurityContextHolder,这个是一个非常基础的对象,存储了当前应用的上下文SecurityContext,而在SecurityContext可以获取Authentication对象。也就是当前认证的相关信息会存储在Authentication对象中。
用户4919348
2022/05/18
8580
【第九篇】SpringSecurity核心过滤器-SecurityContextPersistenceFilter
接近8000字的Spring/SpringBoot常用注解总结!安排!
可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot 来开发项目基本没啥大问题了!
Guide哥
2020/05/07
2.1K0
接近8000字的Spring/SpringBoot常用注解总结!安排!
了解SecurityContext
通常我们在认证后访问需要认证的资源时需要获取当前认证用户的信息。比如 “查询我的个人信息”。如果你直接在接口访问时显式的传入你的 UserID 肯定是不合适的。因为你认证通过后访问资源,系统是知道你是谁的。而且显式的暴露用户的检索接口也不安全。所以我们需要一个业务中可以检索当前认证用户的工具。 接下来我们来看看 Spring Security 是如何解决这个痛点的。
橘子君丶
2023/03/06
4660
了解SecurityContext
Spring认证中国教育管理中心-Spring Data Couchbase教程三
原标题:Spring认证中国教育管理中心-Spring Data Couchbase教程三(Spring中国教育管理中心)
IT胶囊
2022/01/11
1.8K0
Spring认证中国教育管理中心-Spring Data Couchbase教程三
Spring Security源码分析六:Spring Social社交登录源码解析
OAuth2是一种授权协议,简单理解就是它可以让用户在不将用户名密码交给第三方应用的情况下,第三方应用有权访问用户存在服务提供商上面的数据。
java干货
2021/02/19
7100
Spring Security源码分析六:Spring Social社交登录源码解析
Spring Data JPA 的时间注解:@CreatedDate 和 @LastModifiedDate
选择 Spring Data JPA 框架开发时,常用在实体和字段上的注解有@Entity、@Id、@Column等。在表设计规范中,通常建议保留的有两个字段,一个是更新时间,一个是创建时间。Spring Data JPA 提供了相应的时间注解,只需要两步配置,就可以帮助开发者快速实现这方面的功能。
happyJared
2018/12/24
6.3K0
Spring Security (一) Architecture Overview
国庆 + 中秋,先祝大家双节快乐!接一下推荐一下国庆还在写干货的有为少年,也就是本篇的作者,文末卡片点击可关注他的个人公众号! 一直以来我都想写一写Spring Security系列的文章,但是整个Spring Security体系强大却又繁杂。陆陆续续从最开始的guides接触它,项目中看了一些源码,到最近这个月为了写一写这个系列的文章,阅读了好几遍文档,最终打算尝试一下,写一个较为完整的系列文章。 较为简单或者体量较小的技术,完全可以参考着demo直接上手,但系统的学习一门技术则不然。以我的认知,一
程序猿DD
2018/02/01
1.1K0
Spring Security (一) Architecture Overview
【第二篇】SpringSecurity的第一次美好约会
  首先来看看在spring-security-core中的SecurityContextHolder,这个是一个非常基础的对象,存储了当前应用的上下文SecurityContext,而在SecurityContext可以获取Authentication对象。也就是当前认证的相关信息会存储在Authentication对象中。
用户4919348
2022/05/10
3140
【第二篇】SpringSecurity的第一次美好约会
推荐阅读
相关推荐
Springboot之Security前后端分离登录
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档