2017-10-22 11 views
0

私はAPIとしてZend Expressiveを使用しています。 APIキーのリクエストヘッダーを検証するミドルウェアを追加することに成功しました。私はこれは実際にはかなりうまく動作設定/ pipeline.phpにZend Servicemanagerを使用してミドルウェアをパイプすることは可能ですか?

$app->pipe(new MyAuthMiddleware(....); 

middleware using the pipe() functionを追加瞬間

return [ 
'dependencies' => [ 
    /* ... */ 
    'invokables' => [ 
     // Remove this entry: 
     App\Action\HelloAction::class => App\Action\HelloAction::class, 
    ], 
    'factories' => [ 
     /* ... */ 
     // Add this: 
     App\Action\HelloAction::class => App\Action\HelloActionFactory::class, 
    ], 
    /* ... */ 
],]; 

質問: しかし、私は次のように、configuration fileで、代わりにZendのServicemanagerを使用して配管を追加したいそれはZendのServicemanagerを使用してミドルウェアをパイプすることは可能ですか?それはどうですか?

答えて

2

はい、可能です。あなたが求めているように、表現力豊かな1.1までは設定されていました。 1.1以降、スケルトンを介してインストールする場合は、デフォルトでプログラムによって駆動されます。あなたはまだ駆動設定を使用することができますが、私はあなたが両方を使用することはできません言及する必要があります。少なくとも、それはお勧めしません。

設定は次のようになります(表情豊かな1.0の表現力豊かなアプリから)。エラー処理は1.1+で変更されましたが、私はその例を持っていません。ここで

<?php 

return [ 
    'dependencies' => [ 
     'factories' => [ 
      // ... 
     ], 
    ], 

    'middleware_pipeline' => [ 
     'always' => [ 
      'middleware' => [ 
       Zend\Expressive\Helper\ServerUrlMiddleware::class, 
      ], 
      'priority' => 10000, 
     ], 

     'routing' => [ 
      'middleware' => [ 
       Zend\Expressive\Container\ApplicationFactory::ROUTING_MIDDLEWARE, 
       Zend\Expressive\Helper\UrlHelperMiddleware::class, 
       LocalizationMiddleware::class, 
       AuthenticationMiddleware::class, 
       AuthorizationMiddleware::class, 
       Zend\Expressive\Container\ApplicationFactory::DISPATCH_MIDDLEWARE, 
      ], 
      'priority' => 1, 
     ], 

     'error' => [ 
      'middleware' => [ 
       Application\Middleware\Auth\UnauthorizedErrorMiddleware::class, 
       Application\Middleware\Auth\ForbiddenErrorMiddleware::class, 
       Application\Middleware\Logger\ExceptionLoggerMiddleware::class, 
      ], 
      'error'  => true, 
      'priority' => -10000, 
     ], 
    ], 
]; 

は、私が今見つけることができるいくつかの詳細は次のとおりです。

関連する問題