lumen中使用JWT下getTTL令牌过期源码解析(AI)
在lumen中 通过 auth()->factory()->getTTL() 方法获取的源码路径如下
vendor/tymon/jwt-auth/src/Factory.php 在这个Factory.php 文件下 具体的实现方法为
protected $ttl = 60; // 这个是文件下配置这个ttl参数的public function getTTL(){return $this->ttl;}
我一开始就是被protected $ttl = 60;这个误导了,其实这个ttl的值是拿config 下的 jwt.php配置文件下的这个来实现的,单位为分钟,默认为120分钟(2小时)。
'ttl' => env('JWT_TTL', 120),
然后我就去问AI为什么上面是这样子定义return $this->ttl; 但是最后的值又是拿配置文件env下的呢,它是这么回答的:
1.使用的版本可能有区别,新版本的getTTL函数应该是这样子的:
// 这就很直观看到是通过config配置来的了
public function getTTL()
{return $this->config->get('ttl'); // 直接从配置中获取,无需经过 $this->ttl
}
2.旧版本通过类属性缓存配置值,兼容性更强。
我感觉可能是第二个原因导致的,我使用的是
"tymon/jwt-auth": "^1.0"
如果小伙伴有遇到这个问题,也欢迎一起讨论~