[英]Symfony2 - Logout and clear cache + prevent back button
我嘗試在用戶注銷時終止瀏覽器緩存。 我實現了LogoutSuccessHandlerInterface來擴展onLogoutSuccess方法。 沒有錯誤,但是當我退出時,我可以在瀏覽器中按回按鈕,我看到我的profil頁面=>如果我刷新此頁面,我會自動重定向,所以我正確登出。
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 /處理器/ 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 }
我已經成功使用的方法只是在注銷后重定向到上一頁。 如果上一頁受到保護,您的身份驗證系統將重定向回登錄頁面。 現在當你按下后退按鈕時,你應該再次點擊登錄頁面。
請參閱我的帖子,了解Laravel中的示例: https ://laracasts.com/discuss/channels/requests/back-button-browser
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.