2017-02-06 4 views
0

Wir AdvancedUserInterface implementieren Benutzerauthentifizierung zu verwalten, aber aus irgendeinem Grund Symfony Sicherheit wird die gesamte User Einheit und nicht nur die minimal erforderlichen Felder Serialisierung (z id, username, password).Symfony Userinterface ist die Serialisierung die gesamte massiven Nutzer Einheit

Gemäß der documentation müssen wir die genauen Felder angeben, die serialisiert werden sollen (und dann werden die restlichen Felder ignoriert).

class User implements AdvancedUserInterface, \Serializable { 

    /** 
    * @see \Serializable::serialize() 
    */ 
    public function serialize() 
    { 
     return serialize(array(
      $this->id, 
      $this->username, 
      $this->password 
     )); 
    } 
} 

Aber obwohl wir das tun, wird Symfony Sicherheit dieses serialize() Methode zu ignorieren und immer noch die GESAMTE Einheit Serialisierung. Dies unterbricht die Anmeldung, da das Objekt zu groß wird, um es zu serialisieren und zu speichern.

Antwort

0

Offensichtlich Symfony Sicherheit verwendet Symfony\Component\Security\Core\Authentication\Token\AbstractToken und dies hat eine benutzerdefinierte Methode für die Serialisierung, die mehr Daten in die Sitzung serialisierten Benutzer hinzugefügt.

public function serialize() 
{ 
    return serialize(
     array(
      is_object($this->user) ? clone $this->user : $this->user, 
      $this->authenticated, 
      $this->roles, 
      $this->attributes, 
     ) 
    ); 
} 

Dies fügt role in das serialisierte Objekt. Aber wir haben ein benutzerdefiniertes Rollensystem, das Assoziationen mit anderen Entitäten hat (z. B. Site), die das fatale Blähen des User verursachen, wenn es serialisiert wird.

+0

Chadwick, hast du es geschafft, es zu reparieren? Ich bin mit dem gleichen Problem konfrontiert und User Entity ist in Sitzung mit allen Arten von anderen Relationsentitäten serialisiert – undefinedman

+0

@undefinedman wir haben eine Lösung gefunden (weil die Dinge funktionieren), aber ich erinnere mich nicht, was es war ... Ich denke wir irgendwie entfernt die Beziehungen (restrukturiert unsere Entitäten), so dass sie nicht zugeordnet werden. Entschuldigung, ich kann nicht genauer sein. –

Verwandte Themen