アプリに認証済みセクションがありますが、認証はサードパーティ サービスに対して oauth を介して行われます。サービスから 200 コールバックを受け取り、ユーザーを作成/検索して、ログイン済みとして設定します。
したがって、私のプロバイダーは次のとおりです。
providers:
users:
entity: { class: MainBundle:User, property: id }
ユーザー エンティティにユーザー名、パスワードなどのプロパティがありませんが、ユーザーはセキュリティの UserInterface を実装しています。その場合、使用できる識別子は id だけだと思います。
私のトークンは次のように設定されています:
$token = new UsernamePasswordToken($user, null, 'secured_area', $user->getRoles());
$this->securityContext->setToken($token);
今のところ JMS バンドルを使用せずにこれを行いたいと考えています。私のシリアライゼーションは次のようになります。
/**
* 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;
}
上記を使用すると、無限ループのリダイレクトが発生します。
最初は ID のみをシリアル化しましたが、ユーザーの他のすべてのプロパティは利用できません。
次に、オブジェクト全体 ($this) をシリアル化しようとしましたが、1000 の xdebug ネスト レベル エラーが発生しました。
この認証をシリアル化で機能させる方法が少しわかりません