Symfony 2 — обработчик onSecurityAuthenticationSuccess вызывается при каждой загрузке страницы

Я создал прослушиватель событий security.authentication.success, который должен отправлять строку в журналы при успешном входе в систему. Теперь каждый раз, когда я загружаю страницу, которая находится за брандмауэром, я получаю сообщение об успешном входе в свои журналы. Если бы я попытался использовать

if ($this->container->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY'))
{
    $logger->info('Successful login by ' . $username);
}

Я впадаю в рекурсивное безумие (xdebug жалуется после 10000 вложенных вызовов или любого другого значения, которое я установил).

Есть ли способ проверить, только что ли пользователь вошел в систему или использует ли он активный сеанс?

Примечание: я использую Symfony 2.2 (dev-master)


person GergelyPolonkai    schedule 10.12.2012    source источник


Ответы (1)


Из документации:

Событие security.interactive_login запускается после того, как пользователь активно вошел на ваш сайт. Важно отличать это действие от неинтерактивных методов аутентификации, таких как:

  • аутентификация на основе файла cookie «запомнить меня».
  • аутентификация на основе вашего сеанса.
  • аутентификация с использованием базового HTTP-заголовка или дайджест-заголовка HTTP.

Например, вы можете прослушивать событие security.interactive_login, чтобы каждый раз, когда он входит в систему, показывать пользователю приветственное сообщение.

Событие security.switch_user запускается каждый раз, когда вы активируете прослушиватель брандмауэра switch_user.

http://symfony.com/doc/current/components/security/authentication.html#security-events

person Jonny    schedule 26.10.2016