Das Symfony Security User Objekt serialisieren
In einem meiner Projekte nutze ich das VichUploaderBundle. Das Model mit der File-Property ist selbst eine Property der User-Klasse. Das User-Objekt wird im Laufe des Request-Lifecycle deserialisiert und serialisiert. Dadurch bin auch ich in folgenden Fehler gelaufen:
Serialization of 'Symfony\Component\HttpFoundation\File\File' is not allowed
An mehreren Stellen im Internet hieß es, man solle die Methoden `__serialize` und `__unserialize` der User-Klasse überschreiben. Allerdings habe ich nirgendwo heraus gefunden, welche Properties man den braucht. Nach einigen Versuchen bin ich bei der folgenden Lösung angekommen:
<?php
class User implements UserInterface
{
...
/**
* Return only the security relevant data
*
* @return array
*/
public function __serialize(): array
{
return [
'id' => $this->id,
'email' => $this->email,
'password' => $this->password,
];
}
/**
* Restore security relevant data
*
* @param array $data
*/
public function __unserialize(array $data): void
{
$this->id = $data['id'];
$this->email = $data['email'];
$this->password = $data['password'];
}
}
Vielleicht spart das dem ein oder anderen ein bisschen Zeit. Bei mir kommt Symfony 5 zum Einsatz. Ich gehe aber davon aus, dass dies auch mit Symfony 4 und 6 funktioniert.
Diese Website verwendet Disqus um Kommentare anzuzeigen. Aufgrund der geltenden Datenschutzgesetzte (DSGVO) musst du dem Laden der Kommentare von Disqus explizit zustimmen.
Kommentare anzeigen