Symfony, принудительный выход из системы в контроллере

Я использую Symfony 3.4, и я хотел бы выйти из системы моего пользователя в конце моего действия в моем контроллере.

Это действие

public function changeUserEmail() {
     /* change the user email */
     /* perform the logout */
     /* choose the route to redirect to */
     return $this->redirectToRoute(/* some route choosen above */);
}

Есть ли способ реализовать /* perform the logout */ путь Symfony? Я ничего не нашел в документации. Я хочу выйти из системы в контроллере (не хочу перенаправлять на путь выхода), и я хочу выбрать маршрут для перенаправления в контроллере.

Большое спасибо.

Версия Symfony - 3.4


person ste    schedule 26.10.2018    source источник


Ответы (1)


Вот ответ

use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;

// ...

public function changeUserEmail(TokenStorageInterface $tokenStorage) {
     /* change the user email */
     $tokenStorage->setToken();
     /* choose the route to redirect to */
     return $this->redirectToRoute(/* some route choosen above */);
}

Нет необходимости аннулировать весь сеанс, например если для одного задано несколько брандмауэров.

person ste    schedule 26.10.2018
comment
Тоже работаю с Symfony 4. - person AymDev; 10.03.2019
comment
Не уверен, что это то, что должно жить в контроллере. Какой-то случайный контроллер, устанавливающий пустое хранилище токенов, кажется немного неуместным? Почему бы просто не перенаправить напрямую в обработчик выхода приложения? - person James; 17.04.2020
comment
@James, потому что я не могу доверять тому факту, что пользователь когда-либо будет следовать перенаправлению, и потому что я действительно хочу выбрать маршрут внутри контроллера. - person ste; 17.04.2020
comment
Да, диспетчер должен выбрать окончательный маршрут для отправки. Однако установка токенов относится к уровню аутентификации или безопасности, новому классу, который можно вызывать в различных местах для установки (или очистки) токена пользователя - или использования обработчика выхода приложения. Если у вас есть случайные проблемы / ошибки, например, с выходом из системы или чем-то еще, сгребать контроллеры, чтобы увидеть, где пользователь мог выйти из системы, утомительно. - person James; 18.04.2020