我正在尝试执行用户检查侦听器,其中通过用户只能有一个活动会话。 一切都很好,但退出并不起作用。这是我的配置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()方法,但仍然没有任何反应。 如何手动注销用户?