2012-06-06 2 views
0

Есть ли способ, которым плагин может перенаправить всю страницу при вызове через запрос AJAX?Плагин Zend Auth Redirect с AJAX

Вот код, который я использую для перенаправления неидентифицированных пользователей на страницу входа.

public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { 
    if ($request->getControllerName() != 'authentication') { 
     if (!Zend_Auth::getInstance()->hasIdentity()) { 
      $request->setControllerName('authentication'); 
      $request->setActionName('login'); 
      return; 
     } 
    } 
} 

Это работает для обычных запросов, но я хочу, чтобы перенаправить пользователей на страницу входа в систему, когда они делают AJAX запросы после того, как они вышли из системы. Используя то, что у меня сейчас, он загружает HTML для страницы входа в элемент HTML, который предназначен для размещения результата запроса AJAX.

Как я могу перенаправить браузер на страницу входа, а не просто загружать страницу входа на текущую страницу?

+0

Клиентский JavaScript, который вызывает вызов Ajax, должен будет изучить ответ и решить, нужно ли ему перенаправлять. Вызов Ajax не может перенаправить вызывающую страницу. В плагине проверьте, выполняется ли вызов с помощью Ajax, и если да, выведите специальный ответ, чтобы вызывающий код мог перенаправлять. – drew010

+0

Хорошо. Я хотел посмотреть, могу ли я сделать это, не используя скрипт на стороне клиента для обработки перенаправления. Это работает. – bconrad

ответ

0

Хорошо, если я правильно понимаю вас. drew010 правильный, ajax-вызов - это другой HTTP-запрос, а не тот, с которым пользователь действительно видит и взаимодействует. Таким образом, без использования javascript php не может перескакивать с одного HTTP-соединения на другое соединение и выполнять перенаправление. PHP не является «активным» языком, это «реактивный» язык. что это ничего не делает, пока страница не загружается/обновляется.

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