繁体   English   中英

Spring + Hibernate审核(无Spring数据)

[英]Spring + Hibernate auditing (no Spring Data)

我加入了一个使用Spring和Hibernate使用敏捷方法构建的项目,该项目不使用Spring Data,并且拥有自己的用户类(不是org.springframework.security.core.userdetails.User后代)。

审计是要实施的新功能。 (仅记录调用哪个控制器是不够的,我们必须记录每个DB字段的更改以及哪个用户进行了记录。一个控制器可能导致很多DB字段发生更改。)我有哪些选择?

我一直在看Javers,Envers和Audit4j。 Javers需要Spring数据,因此已经淘汰。 Envers的唯一要求是已休眠的Hibernate,但我仍然看不到如何将用户对象从控制器传递给它(用户的auth令牌位于请求对象中)。

Hibernate Envers仅向您提供版本控制(对象在什么时间发生了什么),但并不能帮助您确定谁进行了更改。

对who-part的一种简单解决方案是在所有应审核的对象上(即在诸如AbstractAuditableEntity之类的基类中)创建两个新字段User createdBy; User lastModifiedBy; 添加两个方法(我假设您在这里使用Spring Security):

@PrePersist
protected void setCreatedBy() {createdBy = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();}

@PreUpdate
protected void setCreatedBy() {lastModifiedBy = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM