在Symfony 2 User类中必须序列化/反序列化哪些属性?

gre*_*emo 6 serialization symfony doctrine-orm

Symfony 2中应该包含哪些属性(以及为什么)serialize()deserialize()方法?

现在,我的id领域,它只是工作,但我想知道是什么原因,什么是目的serialize()User类.为了避免这个消息:

您无法从不包含标识符的EntityUserProvider刷新用户.必须使用Doctrine映射的自己的标识符序列化用户对象.

Class User implements AdvancedUserInterface, \Serializable
{
    /**
     * @return string
     */
    public function serialize()
    {
      return serialize($this->id);
    }

    /**
     * @param string $data
     */
    public function unserialize($data)
    {
      $this->id = unserialize($data);
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然没有实施\Serializable和所有属性protected,我得到:

Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken :: serialize()必须返回一个字符串或NULL.

Eln*_*mov 4

您需要序列化/反序列化用户名以及在相等性检查中使用的字段。您不需要序列化该id属性,除非可以在您的应用程序中更改它。