2010-09-02 23 views
0

J'ai écrit un plugin avec la méthode predispatch() pour vérifier les droits d'accès sur chaque requête de contrôleur. J'ai fait comme plug-in:zend framework plug-in - predispatch()

classe My_Plugin_Checklogin étend Zend_Controller_Plugin_Abstract { fonction publique preDispatch() {

if (isset($_SESSION['Zend_Auth_Static'])) { 
     //no login 
     $request = $this->getRequest(); 
     //the request 
     $request->setModuleName('default'); 
     $request->setControllerName('index'); 
     $request->setActionName('index'); 
     //send to default/login/index 
    } 
} 

}

qu'il appelle preDispatch() avant chaque demande du contrôleur maintenant.

Mais aussi ne me permettant pas de me connecter. Toujours en me gardant sur la page de connexion en raison de la méthode de prédispatch. Comment dois-je définir la méthode de prédispatch

Aidez-nous s'il vous plaît.

Répondre

0

Probablement la meilleure façon de sauter ce plug-in pour un contrôleur particulier (et/ou une action) est d'ajouter une condition au début de preDispatch() méthode du plugin

public function preDispatch(Zend_Controller_Request_Abstract $request) 
{ 
    if ($request->getModuleName() == 'default' 
    && $request->getControllerName() == 'login' 
    && $request->getActionName() == 'index') { 
     return ; 
    } 

    if (isset($_SESSION['Zend_Auth_Static'])) { 
     // your code goes here 
    } 
}