Я использую fosuserbundle с пользовательским поставщиком проверки подлинности и постоянным пользователем mongodb. Пользовательский класс имеет свойство сохраняться как набор ссылок на другую коллекцию mongodb, но этот и другие поля не сериализуются в токере безопасности. В другом моем проекте пользователь как простой старый php-объект правильно сохраняется и извлекается из токена, поэтому я не понимаю, связана ли проблема с гидратацией мангодба.
Обычно в токене сохраняются данные пользователя, которые должны быть сериализованы. Функция 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?