我需要为我构建的Web应用程序实施审核日志记录。我在开发中使用Spring Boot
,MySQL
和JPA (Hibernate)
。我知道有Hibernate Envers
这样的解决方案可以在实体级别进行审核。问题在于,将检查这些日志的用户(构建的Web应用程序的管理员用户)没有实体的概念,他是根据用户操作来表示的。我的客户要求的是能够检测每个用户执行的每个动作。例如,他想列出最近2天执行的所有操作。他希望看到一个表格,例如:
USER REQUESTED_ACTION REQUEST_TIME DETAILS ----- ---------------- ------------ --------- John Log in 2020-10-10 10:10 ----- John Create Assessment 2020-10-10 10:12 AssessmentDay:..., Result:Success
DETAILS
列将包含与动作有关的信息,例如动作的输入和输出。此列对于每个操作都会有所不同,它可能包含JSON
,XML
或其他任何格式的文本,这并不重要。我看到这里出现了几个问题。第一个是我需要在开发人员方面进行大量工作。我可以在Spring AOP
或@Controller
类中应用@Service
来构建DETAILS
和其他列并保存信息,但是仍然不确定这是否是一个好的解决方案。我还考虑使用Envers并将Envers
审核表转换为用户希望查看的上述表。我不确定这是否可能。另一种选择是照原样使用Envers
并向用户介绍实体。我希望您能提供一些指导。
答案 0 :(得分:0)
正如您已经或多或少意识到的那样,Envers不是正确的工作工具。 它在您处理用户操作时处理数据库更改,这甚至可能不会导致数据库更改,例如,您以示例为例的“ LOG IN”操作不会触发任何数据库更改。
我看到的选项是控制者或服务的AOP或HandlerInterceptor