首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未捕获的异常'Firebase\JWT\BeforeValidException‘,消息为'Cannot handle token prior 50901-05-16T05:58:02+00000’

未捕获的异常'Firebase\JWT\BeforeValidException‘,消息为'Cannot handle token prior 50901-05-16T05:58:02+00000’
EN

Stack Overflow用户
提问于 2018-12-07 03:45:54
回答 1查看 1.6K关注 0票数 1

我理解这与库和我的服务器之间的时区差异有关。

我将PHP脚本设置为使用UTC时区。我真的不确定如何解决这个问题。互联网上似乎没有太多的东西可以解决这个问题。我尝试更改JWT类的回旋余地,但仍然收到问题。代码发布在下面。

代码语言:javascript
复制
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
date_default_timezone_set('UTC');

include "../../inc/dbinfo.inc";
require '../vendor/vendor/autoload.php';
use \Firebase\JWT\JWT;
JWT::$leeway = 60;
?>

我也试过了:

代码语言:javascript
复制
JWT:$leeway += 60;

我正在使用来自Amazon Web Services的EC2实例。我还使用Firebase JWT api来生成令牌。

编辑:如果我没有提供足够的信息,请让我知道。如果有更好的方法来生成JWT,也请让我知道。我在图书馆的自动取款机上遇到了很多问题。

下面是我如何创建令牌的方法...

代码语言:javascript
复制
date_default_timezone_set('UTC');
use \Firebase\JWT\JWT;

    $currentTimeInMillis = round(microtime(true) * 1000);

        $token = array(
            "iss" => "http://example.org",
            "sub" => $username,
            "iat" => $currentTimeInMillis,
            "exp" => $currentTimeInMillis + 256000000);

        $jwt = JWT::encode($token, $key);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-07 04:28:53

问题出在下面这一行:

代码语言:javascript
复制
$currentTimeInMillis = round(microtime(true) * 1000);

如果您运行此命令:

代码语言:javascript
复制
echo date('Y-m-d', round(microtime(true) * 1000));

您看到了50901-06-21,它指出了您的问题。移除圆角零件:

代码语言:javascript
复制
$currentTimeInMillis = microtime(true);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53658600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档