【发布时间】:2018-10-27 12:48:23
【问题描述】:
我已经安装了 Laravel Passport 并根据文档进行了配置。从我的 VueJS 文件调用 axios.get 时,第一个调用按预期工作。将laravel_sessionRequest 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 被拒绝? **
【问题讨论】:
-
你使用的是什么版本的 Laravel?网络中间件应该设置正确。
-
我使用的是 Laravel 5.6。
-
您是否已将
Laravel\Passport\HasApiTokens特征添加到您的App\User模型中?你有没有把config\auth.php中的API驱动改成passport? -
@IlyasDeckers 我有,是的。我的用户模型是 App\Models\Auth\User - 这可能是个问题吗?我已经按照文档中的所有步骤进行了操作,并且对 API 的第一次调用有效,因此在我看来,配置不太可能是问题所在。我真的想弄清楚 \Laravel\Passport\Http\Middleware\CreateFreshApiToken 中间件的用途,因为它似乎是个问题。
-
这应该不会给您带来任何问题。也许尝试重新安装护照。如果您遵循文档,这应该可以开箱即用。
标签: laravel laravel-5 vue.js axios laravel-passport