前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Data Commons审计

Spring Data Commons审计

原创
作者头像
IT胶囊
修改2021-09-29 17:26:40
6580
修改2021-09-29 17:26:40
举报
文章被收录于专栏: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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档