私が求めているものに関連する投稿はたくさんありますが、長い検索を行っても探しているものが見つからなかったため、どこかに存在する場合はお詫びします。
私の目標-Zendアプリへのすべてのリクエストは、preDispatchプラグインを経由してから、既存の認証クレデンシャルがリクエストされた操作に十分かどうかを判断するカスタム認証コントローラーに渡す必要があります。「十分」はアプリのロジックに依存するため、コントローラー+モデルレベルでこれを実行したいのはなぜですか。それらが十分である場合、それらは元の要求を指定されたコントローラー+アクションに沿って送信します。そうでない場合、デフォルトで「失われる」アクションになります。
現在、preDispatchで設定されたauthカスタムプラグインを使用して、POSTされた認証クレデンシャルをチェックするだけです(ログインしている場合)。その後、すべての場合、プラグインは元のリクエストを保存し、全員をリダイレクトします(認証されているかどうかは関係ありません)。 )私の認証コントローラーに、a-la:
$request->setModuleName('default')
->setControllerName('auth')
->setActionName('check')
->setParam('oreq',$request->getParams());
私の問題/質問は、auth-> checkアクション内で、決定が行われた後にリダイレクトをどのように実行する必要があるかということです。私が使用する場合:
$this->_helper->redirector($or['action'], $oreq['controller']);
次に、これらのリクエストがpreDispatchプラグインを再び通過するときに、明らかに無限ループが発生します。確かに、Authプラグインがそのような要求を無視するように、リダイレクトで何かを渡すことができますが、これは明らかにセキュリティホールです。md5ハッシュを生成して保存し、それをセッションに保存して、それをエスケープパラメータとして渡すことを考えていましたが、それは少し大雑把に思えます。
そこにもっと良いアイデアはありますか?おそらく、Zend Appの標準の事前ディスパッチルーチンを通過しないリダイレクトメソッドですか?前もって感謝します!