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

Posted

技术标签:

【中文标题】BulletPHP 框架和 Firebase/JWT - 检查令牌错误【英文标题】:BulletPHP framework and Firebase/JWT - Checking token error 【发布时间】:2016-02-03 10:57:53 【问题描述】:

我正在使用 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 

【问题讨论】:

【参考方案1】:

发生这种情况是因为您的本地机器/本地服务器上的时间比远程服务器(无论从哪里生成令牌)时间稍慢。

如果你修改 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

【讨论】:

非常感谢您的帮助

以上是关于BulletPHP 框架和 Firebase/JWT - 检查令牌错误的主要内容,如果未能解决你的问题,请参考以下文章

相机框架和物体框架

iframe和框架的区别

介绍Collection框架的结构;Collection 和 Collections的区别

插件和框架的区别是啥?

从另一个框架和应用目标访问框架

基础框架Fundation和UIkit框架的定义和使用