Laravel 护照延长访问令牌过期时间

Posted

技术标签:

【中文标题】Laravel 护照延长访问令牌过期时间【英文标题】:Laravel passport extend access token's expiration time 【发布时间】:2021-01-14 11:56:17 【问题描述】:

我曾经在我的 php 项目中使用纯 jwt 库。为了扩展用户的令牌,我使用了刷新令牌。 Laravel 的passport 中没有这个概念。只有一个有过期时间的访问令牌。

假设我将时间设置为 1 小时。一小时后,用户在网站上工作时退出Laravel 的最佳实践是什么?

请不要提及长时间过期这不是解决方案。

【问题讨论】:

所以您想要使用护照的解决方案? @lagbox 是的,可能。 【参考方案1】:

Laravel Passport 确实有刷新令牌:https://laravel.com/docs/8.x/passport#refreshing-tokens

刷新令牌也可以过期,但寿命相当长。刷新令牌,如果被泄露,将毫无用处,因为除了刷新令牌之外,攻击者还需要客户端 ID 和密码才能获得访问令牌。

您可以按照此处所述自定义令牌生命周期:https://laravel.com/docs/8.x/passport#token-lifetimes

常见的用例包括在旧的访问令牌过期后获取新的访问令牌,或首次访问新资源。

【讨论】:

谢谢。但是您提到的链接是针对oauth 协议的。我只是想以一种简单的方式授权我的用户。 假设您正在为第一方应用程序或 SPA 开发 API,您正在寻找的是 password-grant 流。它与 JWT 非常相似。 laravel.com/docs/8.x/passport#creating-a-password-grant-client 如文档中所述:The OAuth2 password grant allows your other first-party clients, such as a mobile application, to obtain an access token using an e-mail address / username and password. This allows you to issue access tokens securely to your first-party clients without requiring your users to go through the entire OAuth2 authorization code redirect flow. 我碰巧有几个样板项目,您可以使用它们来了解它是如何工作的。 Nuxt.js 用法:github.com/pktharindu/nuxt-laravel-passport-example Passport 样板:github.com/pktharindu/laravel-api-boilerplate-passport 您的login 路由使用'Laravel\\Passport\\Http\\Controllers\\AccessTokenController@issueToken'。它是否同时返回访问令牌和刷新令牌?

以上是关于Laravel 护照延长访问令牌过期时间的主要内容,如果未能解决你的问题,请参考以下文章

JWT/Laravel 延长令牌有效期

Laravel Passport令牌过期方法不起作用

JWT(JSON Web Token)自动延长过期时间

Google 帐户访问令牌

laravel jwt 更改令牌过期时间

在 Laravel 中处理过期令牌