Symfony2在哪里/如何序列化和写入其会话数据?

时间:2013-03-08 05:29:34

标签: mongodb session serialization symfony

概述:

我有一个基于Symfony1构建的应用程序,但我正在使用Symfony2构建新部件。我已经在Symfony2上移动了登录/注销操作,并使Symfony1从Symfony2读取会话数据。通过告诉Symfony2在默认的PHP $ _SESSION中编写会话数据,它工作得很好,一切都在数组中,Symfony1可以读取数据并自动登录我的用户。

现在我将Symfony1和Symfony2应用程序移动到各自的VM上。因此,我不是在PHP $ _SESSION中编写,而是将会话保存在MongoDB中(通过MongoDbSessionHandler)。但是现在当我从Symfony1应用程序中读取会话数据时,我最终会得到类似的结果:

_sf2_attributes|a:0:{}_sf2_flashes|a:0:{}_sf2_meta|a:3:{s:1:"u";i:1362655964;s:1:"c";i:1362655964;s:1:"l";s:1:"0";}

并且它绝对不是不可序列化的。 Symfony2似乎以自己的方式序列化数据,我猜这些_sf2_ *东西是metadatabags。问题是我无法找到序列化发生的位置。为了能够反序列化,我需要找到它是如何序列化的。我发现的最近的地方是SessionHandlerProxy:

public function write($id, $data)
{
    return (bool) $this->handler->write($id, $data);
}

这里传递的$ data包含序列化数据,但我在代码中找不到它。

运气好吗?

1 个答案:

答案 0 :(得分:2)