1
我有一個動作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);
}
我無法理解你的代碼。但是你可以這樣做。當用戶訪問你的站點時,在發送他登錄頁面之前保存會話或數據庫的路徑。登錄後檢查你的會話或數據庫是否有他以前鏈接的值,然後將他重定向到該鏈接,否則重定向他默認控制器。 – 2014-12-27 13:59:24
當您重定向到登錄頁面時,您可以添加一個通過GET方法傳遞的附加變量,登錄後您可以從變量中提取值並將用戶重定向回原始頁面 – 2014-12-27 14:05:31