Symfony:用户无法手动注销

时间:2014-08-12 16:02:22

标签: php symfony session fosuserbundle logout

我正在尝试执行用户检查侦听器,其中通过用户只能有一个活动会话。 一切都很好,但退出并不起作用。这是我的配置yml

remember_me:
    key:      "%secret%"
    lifetime: 31536000 # 365 days in seconds
    path:     /
    domain:   ~ # Defaults to the current domain from $_SERVER
    name: _security_remember_me
logout:                
    invalidate_session: false
    delete_cookies:
    _security_remember_me: { path: /, domain: ~ }

这是我的UserProvider

<?php
    namespace Application\MainBundle\Security;
    use FOS\UserBundle\Security\UserProvider;

    class EmailProvider extends UserProvider 
    {
        private $container;
        public function setContainer(\Symfony\Component\DependencyInjection\ContainerInterface $container = null)
        {
            $this->container = $container;
        }

    /**
     * {@inheritDoc}
     */
    protected function findUser($email)
    {
        return $this->userManager->findUserByEmail($email);
    }

    public function refreshUser(\Symfony\Component\Security\Core\User\UserInterface $user)
    {
        if ($user->getActiveSession() !== $this->container->get('session')->getId()) {
            setcookie('_security_remember_me', FALSE, time() - 3600, '/');
            $this->container->get('application.session.handler')->destroy($this->container->get('session')->getId());
            $this->container->get('session')->invalidate();
            $this->container->get('security.context')->setToken(NULL);
        }

        return parent::refreshUser($user);
     }

}

Cookie被删除了,但会话还活着,让我发疯。

Setcookie()函数是我的最后一个想法,我正在尝试使用symfony clearCookie()方法,但仍然没有任何反应。 如何手动注销用户?

0 个答案:

没有答案