我無法在symfony2中使用'Employee'實體進行身份驗證,因爲它包含許多與其他映射我的項目中的實體。我的一些映射如下:例外:Symfony Component Security Core Authentication Token UsernamePasswordToken :: serialize()必須返回一個字符串或NULL
/**
* @var EmployeeDesignation
*
* @ORM\ManyToOne(targetEntity="EmployeeDesignation")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="employee_designation_id", referencedColumnName="id")
* })
*/
private $employeeDesignation;
/**
* @var EmployeeDesignation
*
* @ORM\ManyToOne(targetEntity="EmployeeType")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="employee_type_id", referencedColumnName="id")
* })
*/
private $employeeType;
身份驗證沒有任何映射工作正常。我試圖與「序列化()」和「反序列化()」在它的方法,如下面:
class Employee implements AdvancedUserInterface, \Serializable{
/**
* serialize the username
* @return serialize
*/
public function serialize() {
return serialize($this->emailOfficial);
}
/**
* unserialize
* @param $data
*/
public function unserialize($data) {
$this->em = unserialize($data);
}
我做上面的方法後得到以下錯誤:
You cannot refresh a user from the EntityUserProvider that does not contain an identifier. The user object has to be serialized with its own identifier mapped by Doctrine.
我曾嘗試這樣一來,從而擺脫以前的錯誤,這是如下:
Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::serialize() must return a string or NULL
所以,任何人都可以請提出一個方法,從這個問題要克服?
非常感謝你!很有幫助! – Ben 2012-06-06 18:53:42
你節省了我大量的時間調試,謝謝 – 2012-11-12 22:31:22
我認爲當你的用戶實體有一個關係鏈接回用戶時出現這個錯誤信息,例如:User-> Article-> Author'('User' has many Articles '和'Article'有'User'作爲作者),則序列化失敗。這就是爲什麼當你使用唯一主鍵(id)序列化'User'時,所有事情都做得很好。所以,使用'__sleep'函數並返回主鍵。 – Dmitriy 2013-01-21 10:50:38