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

时间:2014-12-27 13:54:04

标签: php symfony redirect

我有一个动作 addFavorite 只有AUTHENTICATED用户才能访问。当用户匿名时,他将被重定向到登录表单。所以我希望用户在连接后重定向到此操作。 现在他被重定向到默认路径

security.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%                                    

的ActionController:

    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);
}

1 个答案:

答案 0 :(得分:1)

根据Symfony's documentation,用户会自动重定向到他们尝试访问的页面。因此,如果他们在未经过身份验证的情况下已经在 addFavorite 路由上,他们将会登录并立即发送回来。

您也可以使用以下格式手动设置:

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