0

我需要为我构建的 Web 应用程序实现审计日志记录。我正在使用Spring BootMySQL并且JPA (Hibernate)正在开发中。我知道有一些解决方案,比如Hibernate Envers在实体级别进行审计。问题在于,将检查这些日志的用户(构建的 Web 应用程序的管理员用户)没有实体的概念,他说的是用户操作。我的客户要求的是能够检测每个用户执行的每个操作。例如,他想列出过去 2 天内执行的所有操作。他希望看到如下表格:

用户 REQUESTED_ACTION REQUEST_TIME 详细信息  
----- ---- ------------ ---------
约翰 登录 2020-10-10 10:10 -----
John 创建评估 2020-10-10 10:12 AssessmentDay:...,结果:成功

DETAILS列将包含与操作相关的信息,例如操作的输入和输出。此列对于每个操作都会有所不同,它可能包含文本JSONXML或任何其他格式,没关系。我看到这里出现了几个问题。第一个是它需要在开发人员方面做很多工作,我。我可以Spring AOP@Controlleror@Service类中应用来构建DETAILS和其他列并保存信息,但仍然不确定这是否是一个好的解决方案。我也在考虑使用 Envers 并将Envers审计表转换为用户希望看到的上表。我不确定这是否可能。另一种选择是按Envers原样使用并教育用户有关实体的知识。我会很感激一些指导。

4

1 回答 1

0

正如您已经或多或少意识到的那样,Envers 不是适合这项工作的工具。它在您处理用户操作时处理数据库更改,这甚至可能不会导致数据库更改,例如,您用作示例的“登录”操作不会触发任何数据库更改。

我看到的选项要么是控制器或服务上的 AOP,要么是HandlerInterceptor

于 2020-12-07T10:32:10.217 回答