Staying in the same page mean you don't actually access your code.
You should handle this in a listner, not in a controller.
Your class LoginController should be called LoginListener and be in some event folder.
A controller is only used to contain action. This could be your problem.
Here is an exemple for redirect user depending of the pages he try to access if he is connected or not:
<?php
namespace AppBundle\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use FOS\UserBundle\Model\User;
/**
* Class RedirectUserListener
* @package AppBundle\EventListener
*/
class RedirectUserListener
{
private $tokenStorage;
private $router;
/**
* RedirectUserListener constructor.
* @param TokenStorageInterface $tokenStorage
* @param RouterInterface $router
*/
public function __construct(TokenStorageInterface $tokenStorage, RouterInterface $router)
{
$this->tokenStorage = $tokenStorage;
$this->router = $router;
}
/**
* @param GetResponseEvent $event
*/
public function onKernelRequest(GetResponseEvent $event)
{
if ($this->isUserLogged() && $event->isMasterRequest()) {
/** @var \AppBundle\Entity\User $user */
$user = $this->tokenStorage->getToken()->getUser();
if (empty($user->getModifiedBy())) {
$user->setModifiedBy($user);
}
$currentRoute = $event->getRequest()->attributes->get('_route');
if ($this->isAuthenticatedUserOnAnonymousPage($currentRoute)) {
$response = new RedirectResponse($this->router->generate('app_default_index'));
$event->setResponse($response);
}
}
}
/**
* @return bool
*/
protected function isUserLogged()
{
$token = $this->tokenStorage->getToken();
if (is_null($token)) {
return false;
}
$user = $token->getUser();
return $user instanceof User;
}
/**
* @param $currentRoute
* @return bool
*/
protected function isAuthenticatedUserOnAnonymousPage($currentRoute)
{
return in_array(
$currentRoute,
['fos_user_security_login', 'fos_user_resetting_request',
'app_user_registration']
);
}
}
And in services.yml:
app.tokens.action_listener:
class: AppBundle\EventListener\RedirectUserListener
arguments:
- "@security.token_storage"
- "@router"
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }