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

Serialization 哪些属性必须在Symfony 2用户类中序列化/反序列化?,serialization,symfony,doctrine-orm,Serialization,Symfony,Doctrine Orm,Symfony 2中的serialize()和deserialize()方法应该包括哪些属性(以及为什么) 现在我有id字段,它可以正常工作,但是我想知道User类中serialize()的原因和目的。为了避免此消息,请执行以下操作: 无法从不支持的EntityUserProvider刷新用户 包含一个标识符。用户对象必须使用其 由条令映射的自己的标识符 在没有实现\Serializable和所有属性受保护的情况下,我得到: Symfony\Component\Security\Core\Aut

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

现在我有
id
字段,它可以正常工作,但是我想知道
User
类中
serialize()
的原因和目的。为了避免此消息,请执行以下操作:

无法从不支持的EntityUserProvider刷新用户 包含一个标识符。用户对象必须使用其 由条令映射的自己的标识符

在没有实现
\Serializable
和所有属性
受保护的情况下,我得到:

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


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

谢谢你的帮助。但是,如果不序列化id(例如,仅用户名),我会得到“您无法从不包含标识符的EntityUserProvider刷新用户”…好的。那是特定于条令的。在这种情况下,您应该序列化它。如果您不打算覆盖刷新用户对象的方式,那么您肯定需要id。SF2文档中很少有关于这个主题的句子:“id是需要序列化的最重要的值,因为refreshUser()方法使用id在每个请求上重新加载用户。实际上,这意味着在每个请求上使用序列化对象的id从数据库中重新加载用户对象。这确保用户的所有数据都是新的。”
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);
    }
}