【发布时间】:2018-08-26 18:27:17
【问题描述】:
我使用 Laravel 5.6、Vue 2.5 和 Laravel Passport 创建了一个运行良好的 SPA。我真的很喜欢 Laravel 和 Vue,因为它们让使用 API 构建 SPA 变得非常简单且充满乐趣。
按照the docs 中所述设置 Laravel Passport 后,登录以及对 API 的调用根据正确返回并存储在 cookie 中的“laravel_token”按预期工作。
但是,我的问题是我的用户使用该应用程序的时间很长,没有重新加载页面,而只是使用 axios 对 API 执行调用。不知何故,Laravel 不会在 API 调用中刷新“laravel_token”(和相应的 cookie)(当我调用“web”路由时它会这样做)。因此,“laravel_token”会在某个时间点过期,用户需要重新登录。
如何强制 Laravel 在每次从 axios 调用 API 路由时刷新“laravel_token”(从而延长其有效性)?
非常感谢任何帮助!
【问题讨论】:
-
确定用户必须再次登录之前的长度,然后如果它过期,那就是硬奶酪。对于那些更频繁地使用该应用程序的人,您应该检查 jwt 到期时间并决定何时发送刷新令牌请求。 RTM:laravel.com/docs/5.6/passport#refreshing-tokens
-
感谢您的快速回答。我也可以使用它来刷新令牌的 JWT 版本的“laravel_token”吗?更一般地说,我的问题是,如果这真的有必要。当我的用户在令牌的生命周期内与 API 交互时,我的理解是它应该被延长 - 无论如何这不会在 API 调用中自动发生(但它会在 Web 调用中发生)。
-
嗨。你在用axios吗?如果是这样,当尝试使用过期的
laravel_token向您的 api 发送请求时,为所有 401 响应添加一个拦截器(github.com/axios/axios#interceptors),向用户发送他们的会话过期并且他们或 SPA 需要的警报或其他内容再次刷新页面。
标签: php laravel vuejs2 jwt laravel-passport