登录后重定向至上一个操作


Redirect to previous action after login

我有一个动作添加最喜欢的女巫只有经过身份验证的用户才能访问。当用户是匿名的时,他将被重定向到登录表单。所以我希望用户在连接后被重定向到此操作。现在他被重定向到默认路径

安全.yml

        main:
        pattern:   ^/
        anonymous: true
        provider:  main
        form_login:
            login_path: fos_user_security_login
            check_path: fos_user_security_check
            always_use_default_target_path: false
            default_target_path: /
            target_path_parameter:          _target_path
            use_referer:         true
            csrf_provider: form.csrf_provider
        logout:
            path:   fos_user_security_logout
            target: /
        remember_me:
            key:    %secret%                                    

动作控制器:

    public function addFavoriteAction(Travel $travel, Request $request)
    {
    if (!$this->get('security.context')->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
        return $this->redirect($this->generateUrl('fos_user_security_login'));
    }
    if ($request->getMethod() == 'GET') {
    $em = $this->getDoctrine()->getManager();
    $user = $this->get('security.context')->getToken()->getUser();
    $nbFav = $em->getRepository('ProjectTravelBundle:Favorite')->findOneBy(array('user' =>$user, 'travel' =>$travel));
    if(!$nbFav)
    { 
        $favorite = new Favorite();     
        $favorite->setUser($user);
        $favorite->setTravel($travel);
        $em->persist($favorite);
        $em->flush();
    }
    }
    $referer = $this->getRequest()->headers->get('referer');
    return $this->redirect($referer);
}

根据Symfony的文档,用户会自动重定向到他们试图访问的页面。 因此,如果他们已经在addFavory路由上,但未经身份验证,他们将被登录并立即发送回该路由。

您也可以按以下形式手动设置它:

<input type="hidden" name="_target_path" value="your_route_name_goes_here" />