gpt4 book ai didi

php - Symfony2 - 注销并清除缓存 + 防止后退按钮

转载 作者:行者123 更新时间:2023-12-02 05:17:27 25 4
gpt4 key购买 nike

我尝试在用户注销时关闭浏览器缓存。我实现了 LogoutSuccessHandlerInterface 来扩展 onLogoutSuccess 方法。没有错误,但是当我注销时,我可以在浏览器中按后退按钮,我会看到我的个人资料页面 => 如果我刷新此页面,我会自动重定向,所以我正确注销了。

安全.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;
}
}

我尝试使用 this solution并且效果很好,但是每个请求都会调用此方法(每个页面多次)并导致速度变慢。请帮忙!

谢谢

最佳答案

试试这个,对我有用。

<?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);
}

}

服务.yml

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

关于php - Symfony2 - 注销并清除缓存 + 防止后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28991000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com