Redirection après page précédente : FOSUserBundle

Par Nikola, il y a 8 ans


Bonjour,

J'utilise FOSUserBundle,
Après la connexion du membre, il est redirigé vers la route /home.
Une fois redirigé, si on clique sur le bouton "page précédente" du navigateur, on est redirigé vers la route /login avec le formulaire visible.

J'aimerai resté sur la route /home..
J'ai regardé la doc avec referrer, mais aucun résultat...

Sinon les redirections se font bien, c'est uniquement le clic sur le bouton précédent du navigateur qui pose problème..

Voici mon override sur le controller Security :

<?php namespace AppBundle\Controller; use \FOS\UserBundle\Controller\SecurityController as Controller; use Symfony\Component\HttpFoundation\Request; class SecurityController extends Controller { public function loginAction(Request $request){ if ($this->isGranted('IS_AUTHENTICATED_FULLY')){ return $this->redirectToRoute('home'); } return parent::loginAction($request); } public function checkAction() { if ($this->isGranted('IS_AUTHENTICATED_FULLY')){ return $this->redirectToRoute('home'); } else { return $this->redirectToRoute('index', array(), 301); } } }

Merci d'avance

3 réponses

Getuser31, il y a 8 ans

Hello.
Ca dépends un peu de ton application. Mais dans l'absolue arrange toi pour récuperer la route au moment ou juste avant que l'utilisateur face appel au formulare de connection (ca dépends de comment est fait ton formulaire) et change la redirection vers cette route là après l'action login.

Nikola, il y a 8 ans

Salut
Il faut que je récupère la route dans le formulaire, et que je le transmet au controleur ?
J'ai un formulaire en twig :

<form action="{{ path("fos_user_security_check") }}" method="post"> {% if csrf_token %} <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" /> {% endif %} <label for="username">{{ 'security.login.username'|trans }}</label> <input type="text" id="username" name="_username" value="{{ last_username }}" required="required" autocomplete="username" /> <label for="password">{{ 'security.login.password'|trans }}</label> <input type="password" id="password" name="_password" required="required" autocomplete="current-password" /> <input type="checkbox" id="remember_me" name="_remember_me" value="on" /> <label for="remember_me">{{ 'security.login.remember_me'|trans }}</label> <input type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" /> </form>

Et mon controller associé :

namespace AppBundle\Controller; use \FOS\UserBundle\Controller\SecurityController as Controller; use Symfony\Component\HttpFoundation\Request; class SecurityController extends Controller { public function loginAction(Request $request){ if($this->isGranted('IS_AUTHENTICATED_FULLY')){ $refererUrl = $request->getSession()->get('_security.main.target_path'); return $this->redirectToRoute('home', ['refererUrl' => $refererUrl]); } return parent::loginAction($request); } public function checkAction() { if($this->isGranted('IS_AUTHENTICATED_FULLY')){ return $this->redirectToRoute('home'); } else { return $this->redirectToRoute('index', array(), 301); } } }