FOSUserBundle の InteractiveLoginListener でのユーザー オブジェクトのシリアル化解除に問題があります。今のところ、手動でセキュリティ トークンを設定し、ユーザーを fos_user_security_check に戻すのではなく、別のページにリダイレクトすることができます。
たとえば、これの代わりに:
// IMPORTANT: It is required to set a user to token (UserInterface)
$newToken = new OpenIdToken($token->getOpenIdentifier(), $user->getRoles());
$newToken->setUser($user);
$tokenPersister->set($newToken);
// IMPORTANT: It is required make a redirect to `login_check` with parameter `openid_approved`
return $this->redirect($this->generateUrl('login_check_route', array('openid_approved' => 1)));
これを行う:
// IMPORTANT: It is required to set a user to token (UserInterface)
$newToken = new OpenIdToken($token->getOpenIdentifier(), $user->getRoles());
$newToken->setUser($user);
$tokenPersister->set($newToken);
$this->get('security.context')->setToken($newToken);
return $this->redirect($this->generateUrl('authenticated_user_dashboard'));
「authenticated_user_dashboard」は、ユーザーに最終的に表示させたい内部ランディング ページです。
FOSUserBundle の InteractiveLoginListener::onSecurityInteractiveLogin() が呼び出されないため、最終ログイン時刻は自動的に更新されないことに注意してください。
これは、makasim が調査している既知の問題です: https://github.com/formapro/FpOpenIdBundle/issues/5