ZF2: передача URL-адреса перенаправления в качестве параметра

#routing #zend-framework2

#маршруты #zend-framework2

Вопрос:

В некоторых случаях я пытаюсь реализовать «перенаправление входа», например, на моем веб-сайте есть страница, доступная только для зарегистрированных пользователей.

На данный момент, когда гостевой пользователь переходит на эту страницу, гость перенаправляется на страницу входа в систему, я хочу, чтобы пользователь перенаправлял на ту же страницу после входа в систему.

Мой модуль входа в систему: http://samsonasik.wordpress.com/2012/10/23/zend-framework-2-create-login-authentication-using-authenticationservice-with-rememberme / и интегрировали этот код в контроллер «application / auth».

Когда я использую этот URL: www.qa-staging.com/hemaa/auth/login/redirect/http://google.com
Это дает мне ошибку 404.

при использовании: www.qa-staging.com/hemaa/auth/login/redirect/http://google.com тогда маршрутизация работает, но я думаю, что это не очень хорошая практика для достижения этой цели.

контроллер:
действие авторизации: вход
в систему param1: перенаправление
param2: url для перенаправления

 'noModule' => array(  
    'type' => 'Segment',  
        'options' => array(  
            'route'    => '/[:controller][/:action[/:param1[/:param2[/:param3]]]]',  
            'constraints' => array(  
            'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',  
            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',  
            'param1'     => '[a-zA-Z0-9_-]*',  
            'param2'     => '(.) ',  
            'param3'     => '(.) ',  
        ),  
        'defaults' => array(  
            '__NAMESPACE__' => 'ApplicationController',  
            'controller'    => 'Index',  
            'action'        => 'index',  
        ),  
    ),  
),  
  

Есть идеи, как этого можно достичь?

Ответ №1:

Я думаю, вам следует рассмотреть возможность использования для этого параметра GET. Использование параметров маршрута ZF2 для такой функциональности — неправильный способ.

Таким образом, ваш запрос будет выглядеть примерно так:

 www.qa-staging.com/hemaa/auth/login?redirect=http://google.com
  

Затем в ZF2 вы можете получить параметры перенаправления GET следующим образом:

 $request = $serviceManager->get('Request');
$redirect = $request->getQuery('redirect');
  

А затем вы можете использовать его позже для управления перенаправлением, например, с помощью плагина перенаправления ZF2