Zend FW 2 で安らかな Web サービスを作成しています。RESTが呼び出されるたびにAPIキー? もちろん、すべての機能のすべてのコントローラーのキーをチェックするのは道ではないので、「グローバル」なものを探しています。
ありがとう!
Zend FW 2 で安らかな Web サービスを作成しています。RESTが呼び出されるたびにAPIキー? もちろん、すべての機能のすべてのコントローラーのキーをチェックするのは道ではないので、「グローバル」なものを探しています。
ありがとう!
すべての残りのメソッドが1つのコントローラーにあると仮定すると、そのコントローラーのディスパッチイベントをリッスンでき、高い優先度を使用してチェックが早期に行われます...
モジュールのブートストラップにリスナーを登録します。たとえば、モジュールに を追加したApiController
とします。Application
public function onBootstrap(EventInterface $e)
{
$app = $e->getApplication();
// get the shared events manager
$sem = $app->getEventManager()->getSharedManager();
// listen to dispatch event when triggered by the ApiController
$sem->attach('Application\Controller\ApiController', 'dispatch', function($e) {
// do your api key checks
// if checks fail get the response from the controller
$controller = $e->getTarget();
$response = $controller->getResponse();
$response->setStatusCode(401);
// return $response, short circuiting dispatch event
return $response;
}, 9000); // 9000 = high priority, do this early
}
注意点として、クロージャーに渡されるイベントには、コントローラーのインスタンスがターゲットとして含まれているため、API チェックを行うために ServiceManager からサービスを取得する必要がある場合は、コントローラー自体の場合と同じように行うことができます。 ..
$controller = $e->getTarget();
$sm = $controller->getServiceLocator();