Сделайте что-то сразу после успеха входа в symfony2 и перед перенаправлением?
Я ищу какое-то время, для любой информации, о том, как сделать что-то после успеха аутентификации в symfony2. Я хочу перефразировать пароль пользователя, чтобы использовать bcrypt сразу после успешной проверки подлинности, используя старый хэш. Мне нужно сделать это, когда у меня все еще есть действительный простой пароль, поэтому он должен быть сразу после проверки учетных данных и перед перенаправлением.
Любые подсказки, как это достичь?
Я нашел что-то о диспетчере событий в Symfony, но я не смог найти, произошло ли какое-либо событие после успешной аутентификации.
Пожалуйста, поправьте меня, если я попытаюсь сделать это неправильно и предложите лучший подход.
// ИЗМЕНИТЬ
Хорошо. Я обнаружил, что событие было запущено сразу после успеха auth, оно называется security.authentication.success
. Итак, теперь я могу прикрепить к этому событию, но теперь я не уверен, где в моем коде привязки я должен присоединить слушателя событий? Должен ли я сделать это в методе /src/Pkr/BlogUserBundle/DependencyInjection/PkrBlogUserExtension.php
in load()
?
Ответы
Ответ 1
Вы можете указать обработчик успеха входа, который будет выполнен при успешном входе в систему.
Например, ваш security.yml
firewalls:
main:
pattern: ^/
form_login:
success_handler: my.security.login_handler
Теперь создайте класс, который реализует Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface
и при успешном входе в систему, вы можете делать все, что вам нужно, и обрабатывать перенаправление по своему усмотрению.
/**
*
*/
public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
// handle it and return a response
}
Затем создайте службу с этим именем в вашем services.xml для вашего пакета или в вашем config.yml, используя только что созданный обработчик.
Я изначально узнал, как это сделать после этого урока:
http://www.reecefowell.com/2011/10/26/redirecting-on-loginlogout-in-symfony2-using-loginhandlers/