Выход из Symfony2

Моя проблема – выйти из системы. код, который у меня есть:

public function onAuthenticationFailure(Request $request, AuthenticationException $exception){ return new Response($this->translator->trans($exception->getMessage())); } public function logout(Request $request, Response $response, TokenInterface $token) { $empleado = $token->getUser(); $log = new Log(); $log->setFechalog(new \DateTime('now')); $log->setTipo("Out"); $log->setEntidad(""); $log->setEmpleado($empleado); $this->em->persist($log); $this->em->flush(); } public function onLogoutSuccess(Request $request) { return new RedirectResponse($this->router->generate('login')); } 

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

Solutions Collecting From Web of "Выход из Symfony2"

Чтобы получить токен, вы должны ввести контекст безопасности.

1. Создайте прослушиватель List Out, что-то вроде этого:

 namespace Yourproject\Yourbundle\Services; ... use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface; use Symfony\Component\Security\Core\SecurityContext; class LogoutListener implements LogoutSuccessHandlerInterface { private $security; public function __construct(SecurityContext $security) { $this->security = $security; } public function onLogoutSuccess(Request $request) { $user = $this->security->getToken()->getUser(); //add code to handle $user here //... $response = RedirectResponse($this->router->generate('login')); return $response; } } 

2. И затем в service.yml, добавьте эту строку:

 .... logout_listener: class: Yourproject\Yourbundle\Services\LogoutListener arguments: [@security.context] 

Вот и все, может это поможет.

См. http://symfony.com/doc/current/reference/configuration/security.html.

security.yml

 secured_area: logout: path: /logout **success_handler: logout_listener** 

Взгляните сюда, можете ли вы перезаписать любой контроллер пакета:

http://symfony.com/doc/current/cookbook/bundles/inheritance.html