BulletPHP框架和Firebase/JWT-正在检查令牌错误


BulletPHP framework and Firebase/JWT - Checking token error

我正在用BuletPHP框架开发一个REST API。事实上,我有一个angular JS应用程序,它在本地存储JWT令牌,并发送到服务器以检查过期数据。我已经生成了一个令牌,我想被拒绝,但当我检查响应时,它会启动这个异常:

exception 'Firebase'JWT'BeforeValidException' with message 'Cannot handle token prior to 2015-11-04T18:40:33+0100' in C:'Server'www'vendor'firebase'php-jwt'src'JWT.php:103 Stack trace: #0 C:'Server'www'routes'user.php(92): Firebase'JWT'JWT::decode('eyJ0eXAiOiJKV1Q...', 'QWRhZ2FsIFNpc3R...', Array) #1 [internal function]: Closure->{closure}(Object(Bullet'Request)) #2 C:'Server'www'vendor'vlucas'bulletphp'src'Bullet'App.php(311): call_user_func(Object(Closure), Object(Bullet'Request)) #3 C:'Server'www'vendor'vlucas'bulletphp'src'Bullet'App.php(195): Bullet'App->_runPath('GET', 'eyJ0eXAiOiJKV1Q...') 

为什么我在令牌解码功能上遇到这个异常?

这是我的代币:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpZCI6IjAyMjAxNTExNjVkMmVhMDM0MjU4ODdhNzE3YzQzNTA4MWNmYzVkYmIxMzMwNjQwIiwibmFtZSI6InJvb3QiLCJpYXQiOjE0NDY0ODYwMzMsIm5iZiI6MTQ0NjY1ODgzM30.qHMee39xJC9Rgx4AUzJSkBUnK3P5R1BTjL_JA5j_6f5L99U-gzZkB4VM0LWrfIMOBFQWFC9lwlUNFPWnwPUiYQ 

之所以会发生这种情况,是因为本地机器/本地服务器上的时间比远程服务器(从何处生成令牌)的时间稍慢。

如果您使用以下调试修改vendor''firebase''php-jwt''src''jwt.php的第113行,您可以看到输出:

echo '<br /> payload->iat = '. $payload->iat . '<br />and time() = '.time() . "<br />leeway= ". self::$leeway;

这将输出类似于:

payload->iat = 1447702275  
and time() = 1447702211  
leeway= 0