Laravel:升级 JWT 后,会话过期变得过于频繁

Posted

技术标签:

【中文标题】Laravel:升级 JWT 后,会话过期变得过于频繁【英文标题】:Laravel: After upgrade JWT then session expire become too often 【发布时间】:2021-04-08 02:23:04 【问题描述】:

所以,我在 Laravel v5.8 上升级了我的 jwt 包,由于安全问题,我需要升级。但是,升级jwt 并不容易,需要反复试验。最后,我从github repository here 找到了解决方案,然后jwt 升级完成

===========

解决方案总结:

(1) 通过composer require tymon/jwt-auth:1.0.* --prefer-source升级jwt

(2) 在config/app.php 中更改以下行,之前:

'providers' => [
...
'Tymon\JWTAuth\Providers\JWTAuthServiceProvider' ,
...
]

进入

'providers' => [
...
'Tymon\JWTAuth\Providers\LaravelServiceProvider' ,
...
]

(3) 将implements JWTSubject 添加到User 模型类中

(4) 将以下行添加到User 模型类中:

public function getJWTIdentifier()

   return $this->getKey();


public function getJWTCustomClaims()

   return [];

(5) 运行php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

===========

但是,有副作用

现在,每个登录会话都不会持续很长时间。

在此修复之前,登录会话有时需要一个月才能过期,但现在只需要几个小时。此外,除了上述之外,没有添加其他逻辑/编码。

有什么想法/解决方案吗?

提前谢谢你...

【问题讨论】:

您没有向我们提供与该实际问题相关的太多信息(即调试结果、jwt 包的配置,甚至“每个登录会话不会持续多久。”都是准确的。我们是在谈论下一页加载时的一个小时 5 分钟吗?也就是说,我将首先检查当前版本的 repo 是否需要一些设置文件,这些设置文件要么丢失,要么缺少值,要么已从您的很旧的版本。 【参考方案1】:

生存时间在config/jwt.php 中定义。

查看'ttl' => env('JWT_TTL', 60) 的行,这意味着默认情况下,令牌有效期为 1 小时。

如果您还没有,请务必运行以下命令来发布包配置文件:

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

【讨论】:

嗨,谢谢。我会试试的

以上是关于Laravel:升级 JWT 后,会话过期变得过于频繁的主要内容,如果未能解决你的问题,请参考以下文章

过期后如何刷新 JWT 令牌(Angular 1.5 + Laravel 5.2)

在 laravel 中会话超时或过期后触发函数

修复 laravel 5 会话在刷新或进入另一个页面后过期?

Laravel 会话随机过期

其中 jsonwebtoken 存储在服务器 nodejs 中。用户注销后如何使 JWT 过期

jwt令牌过期后如何注销