如何创建将在 Symfony2 中过期/销毁会话的命令控制台?

Posted

技术标签:

【中文标题】如何创建将在 Symfony2 中过期/销毁会话的命令控制台?【英文标题】:How to create a command console that will expire/destroy a session in Symfony2? 【发布时间】:2014-01-24 21:45:07 【问题描述】:

各位,我想在 Symfony 2 中创建一个使会话过期或销毁会话的命令控制台?这是我的初始代码,但它不起作用:(谢谢希望你能帮助我

public function configure()
    
        $this
            ->setName('pat:session:delete')
            ->setDescription('Delete a existing session')
            ->addArgument('session_id', InputArgument::REQUIRED, 'The ID of session that will destroy')
        ;
    

    public function execute(InputInterface $input, OutputInterface $output)
    
        $sessionId = $input->getArgument('session_id');

        $sessionQuery = SessionQuery::create()
            ->filterById($sessionId)->findOne()->toArray();

        $session = $this->getContainer()->get('session');

        //Option 1
        $session->migrate($destroy = false, $lifetime = null);

        //Option 2
        $session->invalidate();

        //Option 3 
        $session->getMetadataBag()->stampNew(1);

        //Option 4
        $session->remove($sessionQuery["Id"]);

    

【问题讨论】:

【参考方案1】:

// 通过控制器注销(Symfony 2.6+)

$this->get('security.token_storage')->setToken(null); $this->get('request')->getSession()->invalidate();

more info...

【讨论】:

以上是关于如何创建将在 Symfony2 中过期/销毁会话的命令控制台?的主要内容,如果未能解决你的问题,请参考以下文章

我如何检查会话是否将在PHP中过期[重复]

即使我正在工作,会话也会过期,会话生命周期,Ajax 和 Symfony2

为啥在会话过期之前过期的@ViewScoped bean 不会被销毁

我的 Codeigniter 会话一经创建就会自动过期

在 JSP 中销毁会话 [关闭]

如何在 30 分钟后使 PHP 会话过期?