2012-02-14 6 views

答えて

4

私は同じ問題を抱えており、これを理解するために多くの掘り起こしが必要でした。

問題は、Userオブジェクトのserialize関数でユーザー名をシリアル化しないことです。

public function serialize() 
{ 
    return serialize($this->id); 
} 

public function unserialize($data) 
{ 
    $this->id= unserialize($data); 
} 

セッショントークンからユーザーをロードするときにのみ、idが知られている。この方法で(?これはまた_switch_user = _exitの機能を壊す注意してください):

多くの人々は彼らの直列化機能については、以下を使用します。

public function serialize() 
{ 
    return serialize(array($this->id,$this->username)); 
} 

public function unserialize($data) 
{ 
    list($this->id,$this->username) = unserialize($data); 
} 

この方法でユーザ名とIDが利用可能であり、問​​題が修正されています

では、次のコードを使用する必要があり、この問題を解決するには。

注:それはEntityUserProviderによって却下されるように、カスタム・ユーザー・プロバイダの「refreshUser」関数が使用されることはありません!

関連する問題