Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 2 don';在用户接受条款之前,不要创建任何cookie_Php_Symfony - Fatal编程技术网

Php Symfony 2 don';在用户接受条款之前,不要创建任何cookie

Php Symfony 2 don';在用户接受条款之前,不要创建任何cookie,php,symfony,Php,Symfony,我正在尝试实现一种方法来阻止Symfony 2创建cookie。 当用户登录到客户端站点时,将出现一个弹出窗口,允许用户接受cookie策略。 只有在接受这一点之后,才能创建cookie。 如何停止symfony创建cookies,直到发生这种情况?我认为最好的方法是在登录时检查用户 一个选项是使用内核.event\u侦听器 应该是这样的 use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageIn

我正在尝试实现一种方法来阻止Symfony 2创建cookie。 当用户登录到客户端站点时,将出现一个弹出窗口,允许用户接受cookie策略。 只有在接受这一点之后,才能创建cookie。
如何停止symfony创建cookies,直到发生这种情况?

我认为最好的方法是在登录时检查用户

一个选项是使用
内核.event\u侦听器

应该是这样的

use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;

/**
 * This listener ensure that logged user must accept latest terms of service
 *
 * @author po_taka
 */
class TermsForceListener
{
    private $tokenStorage;

    public function __construct(TokenStorageInterface $tokenStorage)
    {
        $this->tokenStorage = $tokenStorage;
    }

    public function onKernelRequest(GetResponseEvent $event)
    {
        if (!$event->isMasterRequest()) {
            return;
        }

        $user = $this->tokenStorage->getToken()->getUser();

        if (!$user instanceof YOUR_CLASS_HERE) {
            return;
        }

        if ($user->getTermsAccepted()) {
            // terms are accepted, continue with the page loading
            return;
        }

        if (YOUR_VALIDATION_IF_CURRENT_PAGE_IS_TERMS_ACEEPTING_PAGE) {
            $response = new \Symfony\Component\HttpFoundation\RedirectResponse(TERMS_ACCEPTING_PAGE, 302);
            $event->setResponse($response);
            $event->stopPropagation();
        }
    }
}
您可以使用以下yaml进行注册

YOUR_SEVICE_NAME_HERE:
    class: TermsForceListener
    arguments: ['@security.token_storage']
    tags:
        - { name: kernel.event_listener, event: kernel.request }

您可以在此处阅读更多有关symfony活动的信息-

您不需要。您将您正在使用Cookie的事实以及您使用Cookie的目的添加到您的隐私政策中,在登录inHi@RiggsFolly之前,用户应该阅读该政策。我猜有人刚刚召开了GDPR会议?从法律上讲,未经许可设置基本cookie是完全可以的(您可以在cookie策略中详细说明)-这是需要事先获得同意的分析。仅供参考,据我所知,cookie同意部分仅适用于持久cookie,而不是基于会话的cookie。我不确定这是否有帮助,但只是想提供一些帮助context@tomBannister-必须在与ICO的工作中进行检查;从技术上讲,这是Cookie和类似的技术:(涵盖PECR的稍旧的PDF-但GDPR在Cookie方面的变化并不是很大)。也: