1

私は現在 Laravel Passport を使用しています。現在のトークンが保存されていることを確認するには、 localhost:8000/api/check以下の json を返します。

{"id":"1c080ff73c6592b8e35630ae36f45f5042c04d9a9ed26a7fafc3793c606484b619ed8792be65a658","user_id":1,"client_id":5,"name":"Personal Access Tokens","scopes":["administrator"],...} 

しかし、管理者にミドルウェアスコープを使用しようとするとlocalhost:8000/api/admin、エラーが返されます

Illuminate\Contracts\Container\BindingResolutionException: ターゲット クラス [スコープ] が存在しません。ファイル内


ここにroutes/api.phpがあります

Route::group(['middleware' => 'auth:api'], function(){
    Route::get('check', 'TeamController@check');

    Route::group(['middleware' => 'scope:administrator'], function() {
        Route::get('admin', 'TeamController@index');
    });
});

TeamController.phpの対応する関数は次のとおりです。

public function check(Request $request) {
    return auth()->user()->token();
}

public function index(Request $request) {
    return auth()->user()->token();
}

誰かが私が間違っていたことを知っていますか?

4

1 に答える 1

1

scopeミドルウェアを登録していない可能性があります。

「Passport には、指定されたスコープが付与されたトークンを使用して着信要求が認証されていることを確認するために使用できる 2 つのミドルウェアが含まれています。開始するには、次のミドルウェアをファイルの$routeMiddlewareプロパティに追加しapp/Http/Kernel.phpます。」

'scopes' => \Laravel\Passport\Http\Middleware\CheckScopes::class,
'scope' => \Laravel\Passport\Http\Middleware\CheckForAnyScope::class,

Laravel 7.x Docs - パスポート - スコープの確認

于 2020-08-07T03:59:37.180 に答える