私のroutes.php
ファイルには、ミドルウェアが次のように指定されたルート グループがあります。
Route::group(['prefix' => 'api', 'middleware' => 'api'], function() {
Route::post('oauth/access_token', function() {
return Response::json(Authorizer::issueAccessToken());
});
}
Lucadegasperi Oauth2 サーバーアドオンを使用しています。そのセットアップのために、ファイル (Kernel クラス)の$middleware
配列に次の LucaDegasperi 項目を入力する必要がありました。Kernel.php
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\LucaDegasperi\OAuth2Server\Middleware\OAuthExceptionHandlerMiddleware::class,
];
同じクラスの$middlewareGroups
配列は次のとおりです。
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
],
];
がOAuthExceptionHandlerMiddleware
行うことは、JSON 応答に対する例外をフォーマットすることです。示されているようにルート グループに適用する'middleware' => 'api'
と、グローバル ミドルウェアが機能しません。これが言えるのは、例外が発生したときに HTML エラー ページが表示されるからです。'middleware' => 'api'
ただし、ルート グループでを省略すると、グローバル ミドルウェアが機能し、エラーに対する JSON 応答が返されます。
どうすればこれを乗り越えることができますか?