Мой API был построен с использованием Laravel 5.4 Passport, авторизация и выдача токенов доступа работают правильно, но при работе с ресурсом, как показано ниже, с использованием Insomnia или Postman:
Authorization: Bearer [encrypted access token goes here which has only "manage-users" scope]
Content-Type: application/json
Accept: application/json
Я отправляю вышеуказанный запрос на этот URL:
который был ограничен доступ к этому обращению к токенам, которые имеют эту область действия
управлять-пользователями, тест-область-1
Route::get('/users', [
'as' => 'users',
'uses' => 'UsersController@index'
])->middleware(['auth:api', 'scopes:manage-users,test-scope-1']);
объемы определены в:
AuthServiceProvider
Passport::tokensCan([
'manage-users' => 'testing',
'test-scope-1' => 'test scope',
'test-scope-2' => 'another test scope',
]);
protected $routeMiddleware = [
...,
...,
...,
'scopes' => \Laravel\Passport\Http\Middleware\CheckScopes::class,
'scope' => \Laravel\Passport\Http\Middleware\CheckForAnyScope::class
];
Токен, используемый для авторизации этого запроса, имеет только область действия «manage-users», поэтому я ожидал получить ответ json с неавторизованным доступом 401 в дополнение к требуемой области для доступа к этому ресурсу, которая называется «test-scope-1».
хотя я получил HttpException «Предоставлены недопустимые области». как HTML-ответ, а не json
Изменить Auth-Scaffolding is not installed.