При реализации OAuth2 не удалось получить службу с токеном носителя - PullRequest
0 голосов
/ 03 мая 2020

Я делаю 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",

Какие еще параметры я должен проверить?

Спасибо!

...