Существует проблема с десериализацией пользовательских объектов в InteractiveLoginListener FOSUserBundle.На данный момент вы можете вручную установить токен безопасности и перенаправить пользователей на другую страницу, а не отправлять их обратно на 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» - это любая внутренняя целевая страница, на которой вы хотите, чтобы пользователи заканчивали.
Обратите внимание, что поскольку InteractiveLoginListener :: onSecurityInteractiveLogin () в FOSUserBundle не вызывается, время последнего входа в систему не будетобновляться автоматически.
Это известная проблема, которую исследует makasim: https://github.com/formapro/FpOpenIdBundle/issues/5