spring security拦截错误的密码

时间:2011-02-04 16:39:23

标签: spring-security

我正在使用spring security。我使用aspectj来记录错误的用户名或密码。通过检查loadUserByUsername是否有异常,我能够拦截错误的用户名。我如何拦截错误的密码。

看起来Spring获取用户对象并根据用户密码检查输入的密码。如何拦截任何异常

提前致谢

2 个答案:

答案 0 :(得分:2)

我对方面不太了解,所以这个可能没有帮助。

首先,您需要问问自己,您是否真的需要区分错误的用户名和错误的密码 - 特别是如果将此信息返回给用户。

默认情况下,spring-security不鼓励这样做,这就是为什么默认情况下它会在任何一种情况下返回BadCredentialsException

Spring security 3.0.x提供public authenticate()方法(在AbstractUserDetailsAuthenticationProvider类中),该方法首先在protected retrieveUser中检索用户( )方法,然后在protected additionalAuthenticationChecks()方法中进行密码验证。

通过将属性hideUserNotFoundExceptions设置为false(默认为true),可以检查authenticate()方法UserNotFoundException(如果有错误)用户)和BadCredentialsException如果密码错误。

答案 1 :(得分:0)

通常使用 ExceptionTranslationFilter FilterSecurityInterceptor 来处理所有身份验证失败。如果这不能满足您的需求,您可能需要查看The Security Filter Chain页面并为您添加一些说明。