Symfony3 onSecurityInteractiveВыйти из системы и установите flash - PullRequest
0 голосов
/ 13 января 2019

Я портирую проект на symfony2.2 на symfony3.4. У меня есть LoginListener с событием onSecurityInteractiveLogin. Когда пользователь вошел в систему, мне нужно что-то проверить. Если проверка не удалась, пользователь должен выйти из системы и показать некоторые флеш-сообщения. Код ниже прекрасно работает в symfony2. В Symfony3 все работает хорошо, кроме флеш-сообщений, это не показывает, я думаю, что сессия очищена. Как показывать флеш-сообщения в форме входа?

public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
    $user = $event->getAuthenticationToken()->getUser();

    if ($user instanceof UserInterface) {

        // Make some check based on user info in database...

        $check = true || false;

        // Logout user and set flash
        if(!$check){
            $request = $event->getRequest();
            $session = $this->container->get('session');
            $session->start();
            $session->getFlashBag()->add('error','message');
            $request->request->set('_target_path', '/logout');
        }
    }
}

1 Ответ

0 голосов
/ 13 января 2019

Я думаю, что лучшее решение использовать кастом Класс аутентификатора . В конструктор вставьте сессию. Вы можете выполнить проверку методом checkCredentials(), вставить сюда ошибку во FlashBag и вернуть false, если пользователь не прошел проверку.

Или вы можете использовать свой пользовательский пользовательский чекер

...