12

それで、問題は、モジュールで Module.php を構成して、ユーザーがセッション中であるかどうかを確認するにはどうすればよいですか? そうでない場合は、ログイン ページにリダイレクトしたいと思います。

セッションに参加していない(ログインしていない)場合、ユーザーに他のアクション(コントローラー)を実行する権限を与えたくありません。

4

3 に答える 3

9

詳細については、ZF2 のイベントでこれを行う必要があります。ここをクリックすると、このコードも役立つ場合があります。http://pastebin.com/FFGVCpki

public function init() {
    // Attach Event to EventManager
    $events = StaticEventManager::getInstance ();

    // Add event of authentication before dispatch
    $events->attach ( 'Zend\Mvc\Controller\AbstractActionController', 'dispatch', array (
            $this,
            'authPreDispatch' 
    ), 110 );
}
public function authPreDispatch($event){
$target = $event->getTarget ();
$serviceLocator = $target->getServiceLocator();
// Do what ever you want to check the user's identity
$url = $event->getRouter ()->assemble ( array (
                    "controller" => "<controller>" 
            ), array (
                    'name' => '<route name>' 
            ) );
$response = $event->getResponse ();
        $response->setHeaders ( $response->getHeaders ()->addHeaderLine ( 'Location', $url ) ));
        $response->setStatusCode ( 302 );
        $response->sendHeaders ();
        exit ();
}
于 2012-10-30T10:08:52.697 に答える
5

リダイレクトを使用しないでください。「ルート」イベントを使用して setParam() メソッドを実行してください。

于 2013-11-13T10:09:41.427 に答える