2014-11-14 3 views
0

Я использую fosuserbundle с пользовательским поставщиком проверки подлинности и постоянным пользователем mongodb. Пользовательский класс имеет свойство сохраняться как набор ссылок на другую коллекцию mongodb, но этот и другие поля не сериализуются в токене безопасности. В другом моем проекте пользователь, как простой старый php-объект, правильно сохранен и извлечен из токена, поэтому я не понимаю, вызвана ли проблема из-за перегибности монгодба.fosuserbundle и пользователь в токере безопасности

ответ

1

Обычно в токене сохраняются данные пользователя, которые должны быть сериализованы. Fosuserbundle сериализует свойства:

/** 
* Serializes the user. 
* 
* The serialized data have to contain the fields used by the equals method and the username. 
* 
* @return string 
*/ 
public function serialize() 
{ 
    return serialize(array(
     $this->password, 
     $this->salt, 
     $this->usernameCanonical, 
     $this->username, 
     $this->expired, 
     $this->locked, 
     $this->credentialsExpired, 
     $this->enabled, 
     $this->id, 
    )); 
} 

которые определены в методе «сериализации». Если вы хотите сериализовать другие свойства, вам необходимо реализовать в своем классе User методы serialize/unserialize. Это не очень хорошая практика, потому что когда вы извлекаете пользователя из токена, он обычно обновляется. Вы реализовали метод «refreshToken» в UserProvider?

+0

Действительно, в моем методе refreshUser я взял данные от старого пользователя и передал его по экземпляру nee, но вы, безусловно, правы, и я упустил метод serialize в исходном классе пользователя fos. –

Смежные вопросы