【问题标题】:session expiry in symfony2symfony2 中的会话到期
【发布时间】:2014-04-21 09:53:31
【问题描述】:

我正在使用以下代码使 symfony2 中的会话到期:

public function onKernelRequest(GetResponseEvent $event)
{
    $this->maxIdleTime = ($this->container->getParameter('session_max_idle_time') > 0) ? $this->container->getParameter('session_max_idle_time') : 1200;

    if (HttpKernelInterface::MASTER_REQUEST != $event->getRequestType()) {

        return;
    }

    $usr= $this->getUser();

    if (is_object($usr)) {

        if ($this->maxIdleTime > 0) {

        $this->session->start();
        $lapse = time() - $this->session->getMetadataBag()->getLastUsed();

            if ($lapse > $this->maxIdleTime) {

                $this->securityContext->setToken(null);
                $this->session->getFlashBag()->set('info', 'You have been logged out due to inactivity.');

            }
        }
    }

}

它在特定时间后正确地使会话过期,但问题是,它不会立即使会话过期,而是在页面上向前移动一步,当我回击时,它会使会话过期。

我不明白是什么原因。请帮助为什么它在下一页移动,然后从那里结束会话并返回登录页面。

【问题讨论】:

  • 将token设置为null后,有没有试过$this->session->invalidate();

标签: php session symfony


【解决方案1】:

设置后问题解决了。

$this->session->invalidate();

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多