我正在使用spring security。我使用aspectj来记录错误的用户名或密码。通过检查loadUserByUsername是否有异常,我能够拦截错误的用户名。我如何拦截错误的密码。
看起来Spring获取用户对象并根据用户密码检查输入的密码。如何拦截任何异常
提前致谢
答案 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页面并为您添加一些说明。