0

各コントローラー要求のアクセス権をチェックする predispatch() メソッドを使用してプラグインを作成しました。プラグインを次のように作成しました:

class My_Plugin_Checklogin extends Zend_Controller_Plugin_Abstract { public function 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
    }
}

}

現在、各コントローラー要求の前に predispatch() を呼び出しています。

しかし、ログインも許可されていません。発送前の方法により、常にログインページに表示されたままになります。predispatch メソッドを設定する方法。

助けてください。

4

1 に答える 1

0

おそらく、特定のコントローラー(および/またはアクション)に対してこのプラグインをスキップする最も簡単な方法は、プラグインのpreDispatch()メソッドの先頭に条件を追加することです。

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
    }
}
于 2010-09-02T16:46:45.757 に答える