2011-04-07 85 views
3

現在我已經有了Spring Security來保護使用基本身份驗證的應用程序。用戶詳細信息來自JDBC源。如果數據庫關閉,用戶加載機制的內部將會拋出DataAccessException。默認身份驗證提供程序類DaoAuthenticationProvider捕獲異常並將其映射回AuthenticationServiceException。這種映射的最終結果是瀏覽器/客戶端收到HTTP代碼401.在Spring Security中處理DataAccessException

我想要做的是以不同方式處理數據庫不可用性。至少,我希望通過使用HTTP 503進行響應來處理這個問題,但我更喜歡將它重定向到錯誤頁面。我怎樣才能做到這一點?

編輯: Ritesh的解決方案是部分正確的。除了實現自己的Basic入口點之外,缺少的步驟還使用安全性模式的v3.0.3,以使<http-basic/>元素具有entry-point-ref屬性。如果您不使用此特殊屬性,則默認的基本過濾器將始終使用其自己的基本入口點實現。

回答

2

BasicAuthenticationEntryPoint發送401給AuthenticationException。您可以創建自己的自定義切入點,以處理AuthenticationServiceException併發出503

另一種選擇是,不要做任何的切入點和使用SimpleMappingExceptionResolver和/或實現自己的HandlerExceptionResolver