2

ルートが設定されたダッシュボードコントローラーがあります/Dashboard[/:action][/:id]

$auth->hasIdentity()ダッシュボードコントローラーのアクションのインデックスのチェックイン、編集、追加、削除はしたくありません。トップレベルからそれを検出したいのです。getControllerConfig()多くのブログやドキュメントを読んだ後、コントローラーが必要とする可能性のある初期設定に適した場所であることがわかりました。

残念ながら、すでにチェックした関数redirect()内からは実行できませんが、それは私の小さなシナリオには多すぎます。getControllerConfig()ZfcUser

誰かがこれに光を当てて感謝することができますか?

4

2 に答える 2

1

これは、zf2フォーラムの最良のソリューションであり、最上位レベルからの要求を処理し、コントローラーロジックを初期化する前にリダイレクトを実行します。

次に、この手法では、コントローラー内の$ auth-> hasIndentity()をチェックする必要はありません。anyAction()を使用すると、ユーザーがログインしている必要があることを確認したい特別なルートで作業することができます。

それは私にとってはうまくいきます私はそれがすべてに役立つことを願っています。

public function onBootstrap(MvcEvent $e)
{
    $serviceManager = $e->getApplication()->getServiceManager();
    $path = $e->getRequest()->getUri()->getPath();

    if(strripos($path, 'Dashboard') !== false) {
        $authService = $serviceManager->get('MyApp\Authentication\Service');
        if (!$authService->hasIdentity()) {
            $e->getResponse()
                ->setStatusCode(302)
                ->getHeaders()->addHeaderLine('location', '/path/to/login');
            return $e->getResponse();
        }
    }
}
于 2012-12-17T05:27:03.330 に答える
0

2.1ブランチを使用する場合は、作業を行うコントローラープラグインがあります。コントローラの内部では、次のことを実行してください。

$identity = $this->identity()
于 2012-12-13T08:19:49.663 に答える