Цель Symphony2 Dynamic Logout?

У меня есть работающее приложение Symfony2, которое правильно регистрирует пользователей и выдает их, а при выходе из системы он перенаправляет пользователя на домашнюю страницу.

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

Мой вопрос:

Могу ли я динамически установить страницу, на которую пользователь обращается, когда они выходят из системы?

Solutions Collecting From Web of "Цель Symphony2 Dynamic Logout?"

Вам нужен обработчик успеха выхода из системы.

Определите обработчик выхода в security.yml:

security: firewalls: admin_area: logout: success_handler: acme.security.logout_success_handler 

И обработчик выглядит следующим образом:

 namespace Acme\Bundle\SecurityBundle\Handler; use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Bundle\FrameworkBundle\Routing\Router; use Symfony\Component\DependencyInjection\ContainerAware; class LogoutSuccessHandler extends ContainerAware implements LogoutSuccessHandlerInterface { public function onLogoutSuccess(Request $request) { // dynamic route logic return new RedirectResponse($this->container->get('router')->generate('dynamic_route_name')); } } 

Btw … Пожалуйста, удалите нежелательный импорт и надеюсь, что это поможет! : D

Вот services.yml

 services: acme.security.logout_success_handler: class: Acme\Bundle\SecurityBundle\Handler\LogoutSuccessHandler calls: - [ setContainer, [ @service_container ] ] 

Мне нужен был обработчик успешного выхода из системы, и именно так я его реализовал:

security.yml :

 logout: success_handler: acme.security.logout_success_handler 

config.yml :

 services: acme.security.logout_success_handler: class: Acme\DefaultBundle\Handler\LogoutSuccessHandler 

Symfony / SRC / Acme / DefaultBundle / Handler / LogoutSuccessHandler.php:

 <?php namespace Acme\DefaultBundle\Handler; use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\DependencyInjection\ContainerAware; class LogoutSuccessHandler extends ContainerAware implements LogoutSuccessHandlerInterface { public function onLogoutSuccess(Request $request) { $target_url = $request->query->get('target_url') ? $request->query->get('target_url') : "/"; return new RedirectResponse($target_url); } }