Я делаю In laravel 7 I OAuth2 Реализация с паспортом и в почтальоне мне удалось подключиться и получить access_token https://imgur.com/a/HR6cuvV
Но я получил сообщение об ошибке «Неаутентифицировано». при попытке получить из моего приложения с API: https://imgur.com/a/zA6Kodd
Где
http://local-votes.com/api/votes
записывается в маршрутах / API. php как:
//Route::get('votes', 'API\VotesController@index');
// is run with http://local-votes.com/api/votes
Route::group(['middleware' => [ 'auth:api']], function(){
Route::apiResource('votes', 'VotesController@index');
});
Поскольку это блейд-приложение, я использовал маршруты / веб. php и только для этого сервиса я начинаю использовать маршруты / api. php для моей услуги, поэтому если раскомментировать строку:
Route::get('votes', 'API\VotesController@index');
мой элемент управления открывается в браузере нормально
В sql трассировке Я вижу строку с нулевым пользователем во втором запросе t:
Time 7.84 :
SELECT *
FROM `vt2_oauth_access_tokens`
WHERE `id` = '9ccc3466f5e840c1c565cef1b6e2720a2e175f8fcc281863b2c3fac6bcb3eb8528670455d3f9fdfa' limit 1
Time 14.63 :
SELECT *
FROM `vt2_users`
WHERE `id` is null limit 1
В 1-й запрос пользователя из таблицы oauth_access_tokens найден. Установка паспорта в приложении / Providers / AuthServiceProvider. php Я добавил:
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Laravel\Passport\Passport;
class AuthServiceProvider extends ServiceProvider
{
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
и в приложении / Пользователь. php:
use Illuminate\Foundation\Auth\User as Authenticatable;
use DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Validation\Rule;
use Illuminate\Contracts\Auth\MustVerifyEmail;
...
class User extends Authenticatable implements MustVerifyEmail
{
use Billable;
use HasApiTokens, Notifiable;
protected $table = 'users';
protected $primaryKey = 'id';
public $timestamps = false;
Что я пропустил?
РЕДАКТИРОВАТЬ: Моя конфигурация / авторизация. php имеет:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
// 'driver' => 'token',
'driver' => 'passport',
'provider' => 'users',
],
],
В приложении / Http / Kernel. php:
'api' => [
'throttle:60,1',
'bindings',
],
Также я запускаю:
php artisan config:cache
composer dump-autoload
В моем composer. json:
"laravel/framework": "^7.0",
"laravel/passport": "^8.4",
Какие еще параметры я должен проверить?
Спасибо!