2017-10-22 16 views
0

API로 Zend Expressive을 사용하고 있습니다. API 키 요청 헤더의 유효성을 검사하는 미들웨어를 추가하는 데 성공했습니다. 순간 Zend Servicemanager를 사용하여 미들웨어를 파이프 할 수 있습니까?

나는이 실제로 꽤 잘 작동 설정에 middleware using the pipe() function/pipeline.php에게

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

를 추가합니다.

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로 대신 젠드에서는 ServiceManager를 사용하여 배관을 추가 할 는 젠드에서는 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, 
     ], 
    ], 
]; 

지금 내가 찾을 수있는 몇 가지 추가 정보를 원하시면입니다