2

ZF2 に REST API を実装しています。ここで、Module.php の認証トークンを確認し、認証が失敗した場合はエラーを返す必要があります。しかし、Module.php から応答を返す方法がわかりませんでした。

onBootstrap の DISPATCH イベントで認可をチェックするコードを書きました。認証が失敗した場合、コントローラーにアクセスせずに Module.php からエラーを返す方法。関数/呼び出しのみexitとして、コントローラーにアクセスせずに戻ることができます。しかし、その場合、私は何の応答も得られませんでした。json_encode(array) の使用は、既に ViewJsonStrategy を有効にしており、コントローラーで JsonModel を使用しているため、標準のようには見えません。

4

1 に答える 1

4

リスナーに応答を返させることで、イベントを短縮できます。たとえば...

public function onBootstrap(EventInterface $e)
{
    $eventManager = $e->getApplication()->getEventManager();
    // attach dispatch listener 
    $eventManager->attach('dispatch', function($e) {
        // do your auth checks...
        if (!$allowed) {
            // get response from event
            $response = $e->getResponse();
            // set status 403 (forbidden) 
            $response->setStatusCode(403);
            // shortcircuit by returning response
            return $response;
        }
    });
}
于 2013-01-30T12:16:36.533 に答える