Symfony2 – Выход из системы и очистка кеша + предупреждение

Я пытаюсь убить кеш браузера при выходе пользователя из системы. Я реализую LogoutSuccessHandlerInterface для расширения метода onLogoutSuccess. Нет ошибки, но когда я выхожу из системы, я могу нажать кнопку в браузере, и я вижу свою страницу профила => Если я обновляю эту страницу, меня автоматически перенаправляют, поэтому я правильно вышла из системы.

security.yml

logout: path: /logout target: / invalidate_session: true success_handler: project_user.handler.logout_handler 

services.yml

 project_user.handler.logout_handler: class: Project\UserBundle\Handler\LogoutHandler 

Проект / UserBundle / Handler / LogoutHandler.php

 <?php namespace Project\UserBundle\Handler; use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RedirectResponse; class LogoutHandler implements LogoutSuccessHandlerInterface { public function onLogoutSuccess( Request $request ) { $response = new RedirectResponse( '/' ); $response->headers->addCacheControlDirective( 'no-cache', true ); $response->headers->addCacheControlDirective( 'max-age', 0 ); $response->headers->addCacheControlDirective( 'must-revalidate', true ); $response->headers->addCacheControlDirective( 'no-store', true ); return $response; } } 

Я пытаюсь с этим решением и работает отлично, но этот метод вызывается для каждого запроса (много раз для каждой страницы) и вызвал замедление. Пожалуйста помоги!

спасибо

Попробуйте это, работает для меня.

 <?php namespace YourBundle; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; class KernelSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents() { return array( KernelEvents::RESPONSE => array( array('clearBrowserCache', 434255), ), ); } public function clearBrowserCache(FilterResponseEvent $event) { $response = $event->getResponse(); $response->headers->addCacheControlDirective('no-cache', true); $response->headers->addCacheControlDirective('max-age', 0); $response->headers->addCacheControlDirective('must-revalidate', true); $response->headers->addCacheControlDirective('no-store', true); } } 

services.yml

 kernel_subscriber: class: YourBundle\KernelSubscriber tags: - { name: kernel.event_subscriber } 

Метод, который я использовал с некоторым успехом, – это просто перенаправить на предыдущую страницу после выхода из системы. Если предыдущая страница была защищена, ваша система auth затем перенаправит обратно на страницу входа. Теперь, когда вы нажимаете кнопку «Назад», вы снова должны нажать страницу входа в систему.

См. Мой пост здесь для примера в Laravel: https://laracasts.com/discuss/channels/requests/back-button-browser