在Spring Security中处理DataAccessException

时间:2011-04-07 04:56:43

标签: database exception-handling spring-security

现在我已经让Spring Security使用基本身份验证来保护应用程序。用户详细信息来自JDBC源。如果数据库发生故障,用户加载机制的内部将抛出DataAccessException。默认身份验证提供程序类DaoAuthenticationProvider捕获异常并将其映射回AuthenticationServiceException。这种映射的最终结果是浏览器/客户端接收HTTP代码401。

我想要做的是以不同的方式处理数据库不可用性。至少,我希望通过HTTP 503响应来处理它,但我更喜欢它重定向到错误页面。我怎样才能做到这一点?

编辑: Ritesh的解决方案部分正确。除了实现您自己的Basic入口点之外,缺少的步骤还是使用安全模式的v3.0.3,以便<http-basic/>元素具有entry-point-ref属性。如果不使用此特殊属性,则默认的基本过滤器将始终使用自己的基本入口点实现。

1 个答案:

答案 0 :(得分:2)

BasicAuthenticationEntryPointAuthenticationException发送401。您可以创建自己的自定义入口点来处理AuthenticationServiceException并发送503。

其他选项不是在切入点执行任何操作并使用SimpleMappingExceptionResolver和/或实现您自己的HandlerExceptionResolver