使用 Passport 的 Laravel API 身份验证导致 401(未经授权)

pal*_*lan 2 php authentication api laravel laravel-passport

按照 Laravel 上有关 API 路由Passport 身份验证的文档,我目前在使用 axois 从 api 获取数据时遇到一些问题。

到目前为止,我已经通过 Composer 安装了 Passport,添加了 hasApiTokens 特征,在 AuthServiceProvider 的 boot 方法中添加了对 Passport::routes 的调用,并将 api 身份验证防护的驱动程序选项设置为“passport”。

由于我希望用户在登录后通过 Javascript 从基于 Vue 的 SPA 使用 API,因此我已将 CreateFreshApiToken 添加到 Web 中间件组。

当我运行以下代码片段来测试所有内容时,就会出现问题:

axios.get('api/users').then( function(response) { console.log(response.data); }); 
Run Code Online (Sandbox Code Playgroud)

结果是“无法加载资源:服务器响应状态为 401(未经授权) ”响应。

我已经检查了使用 axois 发送的请求的标头,并且标头包含两者

Cookie:laravel_token=eyJpdiI6ImJ5RG1KRk...

X-XSRF-令牌:eyJpdiI6IlVRRHhxSXp2VDVy...

我做错了什么吗?

jer*_*edy 5

尝试将 auth 中间件添加到您的 api 组中Kernel.php

    'api' => [
        'throttle:60,1',
        'bindings',
        'auth:api',
    ],
Run Code Online (Sandbox Code Playgroud)

https://github.com/jeremykenedy/laravel-passport/blob/master/app/Http/Kernel.php