2013-02-21 41 views
0

我正在使用hibernate事件监听器来记录上次修改时间。我使用自定义集成器来注册事件侦听器。我通过在META-INF中创建一个具有特定名称的文件来注册我的集成器,如here所解释的。我也想记录当前登录用户的用户名。我假设这些信息将出现在HttpSession中。但在MergeEventListener我没有访问HttpSession。我如何获得HttpSession或者是否有任何其他方式来获取当前登录的用户?如何在hibernate事件监听器中获取当前登录用户

回答

1

我看到的最常见的解决方案是在请求进入时使用servlet过滤器将信息放入ThreadLocal,以便您可以在堆栈中的任意位置从静态上下文访问它需要它。

+0

我想我应该提到我正在使用春天。 – 2013-02-21 00:50:06

+0

不知道这会有所作为吗? – Affe 2013-02-21 00:57:57

+0

我可以创建一个servlet过滤器,并可以访问会话中的用户对象。我如何将它传递给eventlistener。此外,这种担心困扰我:http://stackoverflow.com/a/373613/161628 – 2013-02-21 01:26:34

0

您可以创建一个单独的类一个实用的方法,并把下面的代码行,它随时返回登录的Usrename

SecurityContextHolder.getContext().getAuthentication().getPrincipal() 

我确实在我的网站。同一应用程序使用Spring + Hibernate的。

希望这对你也有帮助。