2012-06-06 3 views
0

Y at-il un moyen que je puisse avoir un plugin rediriger la page entière quand il est appelé via une requête AJAX?Zend Auth rediriger le plugin avec AJAX

Voici le code que j'utilise pour rediriger des utilisateurs non authentifiés vers la page de connexion.

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

Cela fonctionne pour les demandes normales, mais je veux qu'il rediriger les utilisateurs vers la page de connexion quand ils font des requêtes AJAX après sont déconnectés. En utilisant ce que j'ai maintenant, il charge le code HTML de la page de connexion dans l'élément HTML désigné pour héberger le résultat de la requête AJAX. Comment puis-je le faire rediriger le navigateur vers la page de connexion au lieu de simplement charger la page de connexion à l'intérieur de la page actuelle?

+0

Le JavaScript côté client qui effectue l'appel Ajax devra examiner la réponse et décider si elle doit être redirigée. Un appel Ajax ne peut pas forcer la page appelant à rediriger. Dans le plugin, vérifiez si l'appel est fait avec Ajax et si c'est le cas, affichez une réponse spéciale afin que le code appelant puisse rediriger. – drew010

+0

Ok. Je voulais voir si je pouvais le faire sans utiliser le script côté client pour gérer la redirection. Cela fonctionne, cependant. – bconrad

Répondre

0

Eh bien, si je vous comprends bien. drew010 est correct, l'appel ajax est une requête http différente de celle avec laquelle l'utilisateur voit et interagit. Donc, sans utiliser javascript php ne peut pas sauter d'une connexion http à une connexion différente et exécuter une redirection. PHP n'est pas un langage 'actif' c'est un langage 'réactif'. ce qui signifie qu'il ne fait rien jusqu'à ce que la page soit en train de charger/rafraîchir. Mais si vous voulez gérer la redirection par ajax ou pas ajax c'est votre initiateur à la redirection. puisque c'est ce qui fait l'appel pour déclencher tout le processus que vous voulez de toute façon.

Questions connexes