5

ブートストラップ内のチェックが失敗した場合に、zendを停止またはリダイレクトして別のzendコントローラーとアクションに移動する方法を見つけようとしています。

たとえば、get 変数が存在しないか、セッションが存在しない可能性が高いため、ユーザーがログインする必要があります。

したがって、ユーザーは最初にインデックス/何らかのアクションを要求しました

しかし、私は彼らにログイン/インデックスに行きたい

ブート ストラップ内に条件を配置し、コントローラー アクションをビューに変更します。

標準ではない方法でこれを行っている場合、ベストプラクティスに関するドキュメントを誰かに案内してもらえますか?

ゼント初心者

4

3 に答える 3

4

各ページのアクセスチェックとログイン用の認証コントローラーを作成するためのプラグインを使用することをお勧めします。

ここで、これを行う方法を見つけることができますhttp://alex-tech-adventures.com/development/zend-framework/61-zendauth-and-zendform.html

例:

class Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract 
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        // ...

        if(!$auth->hasIdentity())
        {
            $request->setControllerName('authentication')
                 ->setActionName('login');
        }
    }
}
于 2010-10-26T17:20:44.643 に答える
4

Zend のドキュメントから(Dispatcher)

// forward to an action in another controller:
// FooController::bazAction(),
// in the current module:
$this->_forward('baz', 'foo', null, array('baz' => 'bogus'));
于 2010-10-26T14:47:40.723 に答える
2

私は通常、ブートストラップに認証を入れません。それには独自のコントローラーが必要です。

AuthController() を作成して、認証アダプターをセットアップし、インスタンスをセットアップします。

次に、一般的なビュー (安全なページの場合) で、次のような方法でインスタンスを確認します。

$auth = Zend_Auth::getInstance();     
if(!$auth->hasIdentity())      
{
#re-direct to login page
}
于 2010-10-26T14:45:09.580 に答える