वापस करना होगा, मैं 'कर्मचारी' इकाई के साथ symfony2 में प्रमाणीकृत करने में सक्षम नहीं हूं क्योंकि इसमें अन्य के साथ कई मैपिंग शामिल हैं मेरी परियोजना में इकाइयां। मेरे कुछ मैपिंग निम्नानुसार हैं:अपवाद: सिम्फनी घटक सुरक्षा कोर प्रमाणीकरण टोकन उपयोगकर्ता नामपासवर्ड टोकन :: 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.
मैं कोशिश की है मैं 'को क्रमानुसार()' और 'Unserialize()' नीचे की तरह उस में तरीकों के साथ की कोशिश की है इस तरह से इतनी के रूप में पिछले त्रुटि से छुटकारा पाने के, के रूप में है जो इस प्रकार है:
Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::serialize() must return a string or NULL
तो, किसी को भी एक तरह से इस समस्या से दूर करने के लिए सुझाव है कि कृपया कर सकते हैं?
आपको बहुत बहुत धन्यवाद !!! बहुत उपयोगी! – Ben
आपने मुझे बहुत समय डिबगिंग बचाया, धन्यवाद –
मुझे लगता है कि यह त्रुटि संदेश तब प्रकट होता है जब आपकी उपयोगकर्ता इकाई का संबंध उस उपयोगकर्ता से मिलता है जो उपयोगकर्ता को वापस लिंक करता है, पूर्व .: 'उपयोगकर्ता-> आलेख-> लेखक '(' उपयोगकर्ता 'में कई लेख हैं 'और 'आलेख' में लेखक के रूप में' उपयोगकर्ता' है) तो क्रमबद्धता विफल हो जाती है। Thats क्यों जब आप केवल प्राथमिक कुंजी (आईडी) का उपयोग कर 'उपयोगकर्ता' को क्रमबद्ध करते हैं तो सभी चीजें सही होती हैं। तो, '__sleep' फ़ंक्शन का उपयोग करें और वहां प्राथमिक कुंजी लौटाएं। – Dmitriy