laravel_token 对第一个请求有效,但对后续请求无效

laravel_token is valid for first request but not subsequent requests

我已经安装了 Laravel Passport 并根据文档进行了配置。从我的 VueJS 文件调用 axios.get 时,第一次调用按预期工作。 laravel_session Request Cookie被注入到请求中,认证通过,返回资源。

当我尝试再次调用 axios.get 方法时出现问题。我这里的用例是搜索功能。每当用户输入文本字段时,我都会调用 /api/banking/accounts/search/{search-term},使用以下代码:

remoteMethod(query) {
            if (query !== '') {
                this.loading = true;

                axios.get(
                    `/api/banking/accounts/search/${escape(query)}`
                ).then(res => {
                    this.destinationAccountDirectory = res.data;
                    this.loading = false;
                });
            } else {
                this.destinationAccountDirectory = [];
            }
        },

此代码在路由上没有任何 auth:api 中间件的情况下工作正常,并且是第一次使用 auth:api 中间件。从下面的屏幕截图可以看出,laravel_token 值更改并在随后调用 API.

时被拒绝

**我试图删除在安装护照时添加到web中间件组的\Laravel\Passport\Http\Middleware\CreateFreshApiToken,这似乎暂时解决了问题,直到我收到419不久之后的一个请求。什么可能导致新 laravel_tokens 被拒绝? **

我通过从 API 路由中删除 web 中间件解决了这个问题。为什么它首先在那里,我不知道。

我从

更改了我的 api.php
Route::group([
    'middleware' => [
        'web',
        'auth:api']], function() {

    Route::post('/banking/transactions', 'TransactionController@store');

    Route::get('/banking/accounts', 'BankAccountDirectoryController@index');
    Route::get('/accounts/{account}', 'BankAccountDirectoryController@show');
    Route::get('/banking/accounts/search/{term?}', 'BankAccountDirectoryController@search');
});

Route::group([
    'middleware' => [
        'auth:api']], function() {

    Route::post('/banking/transactions', 'TransactionController@store');

    Route::get('/banking/accounts', 'BankAccountDirectoryController@index');
    Route::get('/accounts/{account}', 'BankAccountDirectoryController@show');
    Route::get('/banking/accounts/search/{term?}', 'BankAccountDirectoryController@search');
});

API 路由应该在 web 组下才能受益于中间件,还是纯粹为了 UI?我这样做安全吗?