Я настроил Symfony 4 для использования системы входа SAML.Когда пользователь проходит проверку подлинности с использованием SAML, UserFactory получает пользователя из базы данных, если он уже существует, или сохраняется и сбрасывает новую сущность пользователя.
В контроллере Im затем пытается использовать некоторый простой код:
$user = $this->getUser(); // Returns an App\User\Entity object
$user->setFirstName('Test');
$this->em->persist($user);
$this->em->flush(); // Errors here
Но Doctrine рассматривает этого пользователя как новую сущность или выдает ошибку, что некоторые параметры отсутствуют.
Я мог бы просто снова получить пользователя из базы данных, но это означало бы делать это каждыйКогда я захотел использовать текущий объект User, чтобы что-то сделать.
$this->getDoctrine()->getRepository(User::class)->find($this->getUser()->getId())
Возможно, проблема связана с методами сериализации и десериализации в классе пользователя, поскольку эти атрибуты являются единственными доступными вобъект пользователя.
public function serialize()
{
return serialize(array(
$this->id,
$this->firstName,
$this->lastName,
$this->email,
$this->enabled,
$this->username,
));
}
public function unserialize($serialized)
{
list (
$this->id,
$this->firstName,
$this->lastName,
$this->email,
$this->enabled,
$this->username,
) = unserialize($serialized, ['allowed_classes' => false]
);
}
После аутентификации пользователя они сохраняются в сеансе.$ This-> getUser () - это то, что возвращается из токена безопасности, поэтому я не понимаю, почему это будет отличаться от стандартной аутентификации при входе в систему.
Как я могу обеспечить доступность полного объекта Userчерез $ this-> getUser ()?