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 5 会话在刷新或进入另一个页面后过期?