Я не очень разбираюсь в аспектах, так что может не помочь.
Во-первых, вы должны спросить себя, действительно ли вам нужно различать неправильное имя пользователя и неправильный пароль - особенно, если эта информация возвращается пользователю.
По умолчанию Spring-Security не поощряет это, поэтому по умолчанию он возвращает BadCredentialsException
в любом случае.
Spring security 3.0.x
предоставляет метод public
authenticate()
(в классе AbstractUserDetailsAuthenticationProvider
), который сначала извлекает пользователя в методе protected
retrieveUser
(), а затем выполняет проверку пароля в protected
additionalAuthenticationChecks()
метод.
Установив для свойства hideUserNotFoundExceptions
значение false
(по умолчанию true
), метод authenticate()
можно проверить на UserNotFoundException
(в случае неправильного пользователя) и BadCredentialsException
в случае неправильного пароль.