2011-04-07 52 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

相关问题