Hibernate 使用用户id进行JPA审核
我想在我的web项目中实现审计。基本上,我的应用程序是由一个Web项目(WAR)组成的,它调用EJB项目(JAR)中的方法,所有内容都封装在一个EAR中,EAR部署在一个容器中(Jboss,不久的将来可能还有Websphere) 因此,我在web端获得了用户会话,在ejb端获得了实体和DAO。我想对一些用户事务实现一个审计过程,因此数据状态应该与执行更改的用户id一起保存在数据库中 我可以轻松地将每次调用的用户id传递到EJB端,并从业务方法中执行审计,但这会使我的业务和客户机方法变得混乱 我已经研究过了,这是一个非常有趣的审计框架,但它没有对用户id进行开箱即用的审计。因此,我进一步研究并发现,这解释了如何使用RevisionListener从会话中获取用户id并将其存储在数据库中。但是,它似乎在EAR体系结构中不起作用,原因如下:此RevisionListener使用FacesContext.getCurrentInstance()从会话中获取用户id,因此这意味着RevisionListener应该位于应用程序的Web端,而不是EJB端 嗯,我希望我已经讲清楚了:)Hibernate 使用用户id进行JPA审核,hibernate,jsf,ejb,ear,hibernate-envers,Hibernate,Jsf,Ejb,Ear,Hibernate Envers,我想在我的web项目中实现审计。基本上,我的应用程序是由一个Web项目(WAR)组成的,它调用EJB项目(JAR)中的方法,所有内容都封装在一个EAR中,EAR部署在一个容器中(Jboss,不久的将来可能还有Websphere) 因此,我在web端获得了用户会话,在ejb端获得了实体和DAO。我想对一些用户事务实现一个审计过程,因此数据状态应该与执行更改的用户id一起保存在数据库中 我可以轻松地将每次调用的用户id传递到EJB端,并从业务方法中执行审计,但这会使我的业务和客户机方法变得混乱 我已
干杯 如果您已经有包含业务逻辑的无状态会话bean,则已将经过身份验证的用户的名称传递到EJB中 您可以使用
sessionContext.getCallerPrincipal()
获取调用用户的名称
要求
- web应用程序使用
登录配置(在
中定义)web.xml
- JBoss web应用程序使用
(安全域
);其他应用服务器应该有类似的模式来实现登录/身份验证JBoss.xml