我有一个动作 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);
}
答案 0 :(得分:1)
根据Symfony's documentation,用户会自动重定向到他们尝试访问的页面。因此,如果他们在未经过身份验证的情况下已经在 addFavorite 路由上,他们将会登录并立即发送回来。
您也可以使用以下格式手动设置:
<input type="hidden" name="_target_path" value="your_route_name_goes_here" />