2010-06-20 55 views
1

我是Acegi的新用戶。我以最簡單的形式工作。我必須登錄才能訪問受保護的頁面(我遵循他們的教程)。配置acegi安全性以將成功登錄存儲到數據庫

現在我想擁有每個成功登錄的DB日誌。有沒有簡單的方法來做到這一點?每次有成功的登錄時,或者可能有一些內部的ACEGI功能可以幫助我執行特定操作(我將創建並將信息寫入數據庫)?

目前我正在考慮defaultTargetUrl設置這將當前用戶存儲到數據庫,然後重定向到索引中的重定向頁面的。但我不確定這是否會工作,如果有人通過嘗試訪問其他非索引頁面訪問登錄(如登錄後,acegi似乎將用戶重定向到該頁面,這是我想要的行爲)

有關於此的任何想法?我真的很感激他們。

謝謝。

B.

回答

1

我會通過AOP做到這一點,如果可能的話。

此解決方案適用於Spring 3.x和Spring Security 3.x. Spring Security是Acegi的直接繼承者,如果可能的話,我會使用它。我希望這適用於以前的版本。

@AfterReturning("execution(* org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler.onAuthenticationSuccess(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.springframework.security.core.Authentication)) && args(request, response, authentication)") 
public void onAuthenticationSuccess(HttpServletRequest request, 
     HttpServletResponse response, 
     Authentication authentication) { 
    logger.debug(authentication.getPrincipal() + " logged in."); 
} 

如果你感到不舒服與AOP的工作,當然你也可以建立在手動SimpleUrlAuthenticationSuccessHandler的包裝。

2

你可以使用Spring的event handling mechanism獲得由Spring Security的出版AuthenticationSuccessEvent通知。

+0

這很好用!不知道那件事。非常感謝! – 2010-06-21 01:42:08

+0

哦,我更喜歡這個,而不是我的解決方案!很高興學習新的東西。 – hleinone 2010-06-21 07:35:11