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 护照延长访问令牌过期时间的主要内容,如果未能解决你的问题,请参考以下文章