如何在 Laravel 中验证 API 路由的 Vue.js / Axios 请求

新手上路,请多包涵

我在 Laravel 5.6 中。我构建了所有 API 路由并正确响应来自我的 REST 客户端 (Paw) 的请求。我正在尝试构建一个简单的前端来访问这些路由。

我正在尝试尽可能多地使用 Laravel 的开箱即用功能,因此我使用 Axios 使用 Vue.js 从刀片模板调用这些路由。如果我在测试路由上禁用 auth 中间件,它会工作,但是当为路由启用 auth 中间件时,我在控制台上收到 401 错误。

这个问题似乎很明显……我的 auth:api 守卫 /api 路由希望在标题中看到一个oauth令牌,但是当我使用网页登录时它会进行会话身份验证.我假设有一种简单的方法可以解决这个问题,而不必在 Web 前端欺骗 oauth 令牌请求,对吗?我是否需要以某种方式在 Axios 请求中传递会话令牌?而且,如果是这样,我是否还需要更改我的 api 路由文件中的 auth:api 守卫?

原文由 jreikes 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 519
1 个回答

我解决了!我有点尴尬,因为答案实际上在 Laravel 文档中,但我会说我在将问题发布到这里之前试过了,但它没有用。也许当时有别的东西坏了。

根据 Laravel 文档

您需要做的就是将 CreateFreshApiToken 中间件添加到您的 web 中间件组中 app/Http/Kernel.php 文件:

 'web' => [
    // Other middleware...
    \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],

此 Passport 中间件会将 laravel_token cookie 附加到您的传出响应中。此 cookie 包含一个加密的 JWT,Passport 将使用它来验证来自您的 JavaScript 应用程序的 API 请求。现在,您可以在不显式传递访问令牌的情况下向应用程序的 API 发出请求…

原文由 jreikes 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题