Вы можете использовать ту же процедуру, описанную здесь для обработки паролей с истекшим сроком действия:
Как использовать свойство с истекшим сроком действия в Symfony AdvancedUserInterface?
За исключением того, что вы будете обрабатывать исключение Locked:
http://api.symfony.com/2.5/Symfony/Component/Security/Core/Exception/LockedException.html
Игнорировать этот раздел. Не применяется при использовании кода безопасности Symfony
Просто следуйте http://symfony.com/doc/current/cookbook/service_container/event_listener.html и обрабатывайте различные исключения безопасности:
При использовании кода безопасности Symfony
Вы не можете прослушивать события kernel.exception при работе с формой входа в систему. Код безопасности обрабатывает все исключения внутри.
Для обработки исключений безопасности при входе в систему необходимо реализовать:
Я сейчас внедряю в свой код. Есть несколько статей на эту тему, но их было трудно найти. Я опубликую их, когда проверю.
Обработчики успешных / неудачных попыток аутентификации не могут быть использованы для перенаправления на форму смены пароля, так как пользователю все готово отказано при выполнении.
Хотя они оказались отличными местами для отправки событий, таких как «account_disabled», «account_locked», «account_expired» или «credentials_expired».
Пока на странице назначения разрешены анонимные пользователи, вы можете перенаправлять пользователя куда угодно. Но если страница назначения требует входа в систему, у вас будет цикл перенаправления.
Для этого, вероятно, потребуется пользовательский слушатель аутентификации. Другой возможностью было бы реализовать прослушиватель загрузки учения и голосующего автора, который устанавливает флаг «временного пользователя», когда срок действия учетной записи / учетных данных истек, и позволяет доступ для изменения атрибутов пользователя.
Мне в конечном итоге понадобится реализовать какое-то похожее решение, но у меня сейчас нет времени.
Возможно, есть и другие способы.