2013-06-29 5 views
0

Вопрос для новичков ... Я успешно реализовал пользовательские обработчики и службу (служба пользовательских сведений о пользователе, успех аутентификации, отказ аутентификации) и все, что работает нормально. Теперь я также реализовал функции, которые будут блокировать учетную запись (в течение определенного времени), если они откажут проверку подлинности 3 одновременно.Spring Security Pre Authentication Account Lock Check

Теперь я перехожу к рассмотрению сценария, когда пользователь пытается аутентифицироваться, когда у него есть блокировка учетной записи. Если блокировка активна, аутентификация не должна выполняться, и пользователь перенаправляется на заблокированную страницу/ошибку учетной записи. Если блокировка истекло> блокировка должна быть удалена, а аутентификация выполняется как обычно

В случае, когда блокировка учетной записи активна - я попытался реализовать ее в своем обработчике успешной проверки подлинности, но, несмотря на успешную пересылку пользователя на страница с ошибкой блокировки аккаунта - слишком поздно, поскольку приложение уже аутентифицировало пользователя, и пользователь успешно имеет доступ к защищенным страницам напрямую (что явно не так, поскольку их учетная запись должна быть заблокирована).

Я начал играть, но я думал, что сначала проверил бы для более стандартного/элегантного решения/подхода. Должен ли я выполнять эту проверку и действия в службе пользовательских подробных сведений о пользователе или есть обработчик предварительной проверки подлинности, который я мог бы реализовать до того, как пользователь даже попадет в службу пользовательских данных пользователя? Любая помощь или совет о том, где/как я мог бы с этим справиться, будет очень ценным.

ответ

0

Существует встроенное LockedException. Он будет передан AuthenticationManager, если UserDetails.isAccountNonLocked() == false. Таким образом, вы можете выполнить проверку в UserDetailsService.loadUserByUsername (...). Просто передайте значение false для параметра accountNonExpired при создании нового объекта User.