У меня есть аутентифицированный раздел в моем приложении, но аутентификация выполняется через oauth для сторонней службы. Я получаю 200 обратных вызовов от службы, теперь я создаю / нахожу своего пользователя и устанавливаю его как зарегистрированный.
Поэтому мой провайдер:
providers: users: entity: { class: MainBundle:User, property: id }
Мой пользователь реализует пользовательский интерфейс безопасности, хотя у меня нет имени пользователя, пароля и т. Д. В моей пользовательской сущности. Я предполагаю, что тогда id является единственным идентификатором, который я могу использовать.
Мой токен устанавливается следующим образом:
$token = new UsernamePasswordToken($user, null, 'secured_area', $user->getRoles()); $this->securityContext->setToken($token);
Я хочу сделать это, не используя JMS bundle; моя сериализация выглядит следующим образом:
/** * Serialize * @return string|void */ public function serialize() { return serialize(array( 'id' => $this->getId(), 'display_name' => $this->getDisplayName(), 'email' => $this->getEmail(), )); } /** * Unserialize * @return mixed|void */ public function unserialize($data) { $data = unserialize($data); $this->setId($data['id']); $this->setDisplayName($data['display_name']); $this->setEmail($data['email']); return $this; }
Используя вышеизложенное, я получаю перенаправление бесконечного цикла.
Сначала я только сериализовал идентификатор, но тогда все остальные свойства пользователя недоступны.
Затем я попробовал сериализацию всего объекта ($ this), но это дает мне ошибку уровня вложенности xdebug 1000.
Я немного потерял, как сделать эту работу аутентификации с сериализацией
security.yml
providers: users: entity: { class: MainBundle:User, property: id }
логика логина
$token = new UsernamePasswordToken($user, null, 'secured_area', $user->getRoles()); $this->securityContext->setToken($token);
Я вынул сериализацию из пользовательской сущности, также не применяя равномерный интерфейс. Также не имеют свойств интерфейса, хотя это необходимо:
public function getUsername() { return $this->getId(); }