Я использую fosuserbundle с пользовательским поставщиком аутентификации и постоянным пользователем mongodb.
У пользовательского класса есть свойство, сохраняемое как коллекция ссылок на другую коллекцию mongodb, но это и другие поля не сериализуются в маркере безопасности.
В другом моем проекте пользователь как обычный старый объект php правильно сохранен и извлечен из токена, поэтому я не понимаю, связана ли проблема с гидратацией mongodb.
Обычно в токене сохраняются пользовательские данные, которые необходимо сериализовать. 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,
));
}
которые определены в методе «serialize». Если вы хотите сериализовать другие свойства, вам нужно реализовать в своем классе User методы serialize / unserialize. Это не очень хорошая практика, потому что когда вы извлекаете пользователя из токена, он обычно обновляется. Вы реализовали метод «refreshToken» в своем UserProvider?
Других решений пока нет …