概述:
我有一个基于 Symfony1 构建的应用程序,但我正在使用 Symfony2 构建新部分。我已经移动了 Symfony2 上的登录/注销操作,并使 Symfony1 从 Symfony2 读取会话数据。通过告诉 Symfony2 将其会话数据写入默认的 PHP $_SESSION,它工作得很好,一切都在数组中,Symfony1 可以读取数据并自动登录我的用户。
现在我将 Symfony1 和 Symfony2 应用程序移动到它们各自的虚拟机上。因此,我没有使用 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_* 东西是元数据包。问题是我找不到这个序列化发生在哪里。为了能够反序列化它,我需要找到它是如何序列化的。我找到的最近的地方是在 SessionHandlerProxy 中:
public function write($id, $data)
{
return (bool) $this->handler->write($id, $data);
}
此处传递的 $data 包含序列化数据,但我在调用它的代码中找不到。
运气好的话?