2011-03-24 50 views
4

我有一個自定義的AuthenticationSuccessHandler。如何檢索AuthenticationSuccessHandler中的會話範圍bean?

我想要做的是在onAuthenticationSuccess方法中設置一些會話數據。

要存儲會話數據我想使用會話範圍的bean,它可以在任何控制器中正常工作。

但是,如果我嘗試onAuthenticationSuccess方法中找回它,我得到一個異常:

與名 「scopedTarget.sessionData」

錯誤創建豆:範圍 「會話」是不是爲 當前活動線;

我的代碼是:

WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); 
SessionData sessionData = context.getBean(SessionData.class); 

任何想法?

回答

6

您可以嘗試聲明公開必要的狀態來實現會話範圍的監聽器:

<listener> 
    <listener-class> 
     org.springframework.web.context.request.RequestContextListener 
    </listener-class> 
</listener> 

默認情況下,該狀態由DispatcherServlet暴露,所以請求進入DispatcherServlet(如Spring Security的過濾器之前,它是不可用)。

相關問題