fosuserbundle и пользователь в токене безопасности

0

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

Теги:
serialization
fosuserbundle

1 ответ

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 я взял данные от старого пользователя и передал их по следующему экземпляру, но вы, конечно, правы, и я упустил метод сериализации в оригинальном пользовательском классе fos.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню