2013-02-21 56 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的。

希望這對你也有幫助。

相關問題