Как я могу прослушивать события повторной аутентификации «запомнить меня» в Symfony2? - PullRequest
5 голосов
/ 03 ноября 2011

Используя «обычную» - а не «запомни меня» аутентификацию - я могу установить обработчики успеха и неудач, добавив это в файл security.yml:

form_login:
    # ...
    success_handler: authentication_handler
    failure_handler: authentication_handler

Но я не смог найти способдля прослушивания повторной проверки подлинности «помни меня», когда сеанс пользователя истек и cookie «запомнить меня» используется для повторной проверки подлинности.Любые идеи о том, как мне этого добиться?

Ответы [ 2 ]

3 голосов
/ 11 июля 2012

Создать прослушиватель для события security.interactive_login. Это срабатывает как при простом входе, так и при входе в систему "запомнить меня" (см. Symfony\Component\Security\Http\Firewall\RememberMeListener.php @line: 77).

В слушателе вы можете разделить их, проверив cookie. Вы можете узнать больше о слушателе здесь .

0 голосов
/ 24 апреля 2012

Я не пробовал этого, но, возможно, вы могли бы подключить слушатель к success_handler, но убедитесь, что вы вводите SecurityContext сервис через <argument> в настройках сервиса.

Затем, как только вы введете свой метод обслуживания, вы делаете:

if ( $this->securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED') ){
    // I am remembered visitor
}else{
    // I am the new visitor
}

Опять же, это просто идея, но звучит так, как будто она могла бы ...

...