0

私の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 応答が返されます。

どうすればこれを乗り越えることができますか?

4

2 に答える 2

0

配列に追加Authorizerすることを覚えていましたか?aliases

'Authorizer' => LucaDegasperi\OAuth2Server\Facades\Authorizer::class,

あなたがそれを使用しているため:

Route::post('oauth/access_token', function() {
    return Response::json(Authorizer::issueAccessToken());
});
于 2016-01-04T13:49:07.647 に答える