2012-04-27 28 views
0

是否可以通過在Spring Security中檢查現有的HttpSession來驗證用戶?我希望用戶通過CAS在一個URL(http://example.com/auth)進行身份驗證,但不能訪問其他URL。例如,如果他們直接去http://example.com/content,那麼我想檢查HttpSession並返回一個401未經授權的代碼,如果他們還沒有登錄CAS。如果他們已經進入了/ auth頁面並登錄,那麼去/ content將返回內容。這樣做的主要原因是爲了避免在認證期間CAS引起的任何重定向。檢查Spring Security中現有的HttpSession

我對Spring Security很陌生,無法弄清楚我是否需​​要一個自定義的AuthenticationManager,AuthenticationEntryPoint,或者其他的東西。 AuthenticationManager沒有辦法讓我訪問HttpSession,而AuthenticationEntryPoint似乎不是實現這個功能的正確地方。

任何想法?

回答

0

Spring Security未使用HTTP會話。 相反,你可以方便地調用這個靜態方法:

SecurityContextHolder.getContext().getAuthentication(); 

坦率地說,我認爲,你需要配置Spring Security正確,以避免檢查驗證和手動重定向到其他頁面。

+0

是的,我通常會正確配置Spring Security,但我有一種情況,當會話不存在時,我需要阻止某些頁面上的CAS重定向。 – acvcu 2012-04-30 14:03:52

+0

我在哪裏檢查getAuthentication()方法?我會在Spring Security中使用某種過濾器嗎? – acvcu 2012-04-30 14:15:33

相關問題