laravel jetstream request api route middleware protected api: sanctum возвращает неаутентифицированный ответ

У меня проблема с 'domain' = ›env ('SESSION_DOMAIN', null) в файле session.php. При установке значения SESSION_DOMAIN в файле .env, например

SESSION_DOMAIN = mysite.test

вход в систему не работает, и, похоже, есть посредничество. Если этот параметр не установлен, вход в систему работает нормально, поэтому, когда я вызываю защищенный маршрут api с помощью sanctum maiddleware ex.

Route::middleware(['auth:sanctum'])->group(function () {
    Route::get('/myroute', function () {
        return 'hello world!';
    });
});

У меня неаутентифицированный ответ. Если использовать маршрут файла web.php и вставить ту же функцию:

Route::middleware(['auth:sanctum'])->group(function () {
     Route::get('/api/myroute', function () {
         return 'hello world!';
    });
});

с префиксом api работает штрафы. Я следил за документацией laravel 8.x sanctum https://laravel.com/docs/8.x/sanctum. В проектах laravel 7. * без Jetstream у меня не было проблем. Есть какие-либо предположения или объяснения этого явления. Мне было бы полезно любое объяснение! Огромное спасибо.


person lorenzo taccogna    schedule 16.09.2020    source источник


Ответы (1)


У меня возникла аналогичная проблема, когда я не мог аутентифицировать ни один запрос API из моего интерфейса. Оказывается, сгенерированный Kernel.php по умолчанию не включает промежуточное ПО Sanctum для файлов cookie сеанса - вы необходимо добавить его вручную в свой app/Http/Kernel.php:

 'api' => [
        EnsureFrontendRequestsAreStateful::class, // <- Add and import this middleware
        'throttle:api',
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
 ],

После этого запросы API от моего интерфейса снова работают. Возможно, это решит и вашу проблему.

person RoflCopter24    schedule 20.09.2020