Serialization 哪些属性必须在Symfony 2用户类中序列化/反序列化?
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
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);
}
}