【问题标题】:How to increase jwt expiration time PHPPHP如何增加jwt过期时间
【发布时间】:2020-10-11 21:41:30
【问题描述】:

我在 php 中使用 jwt 令牌,我想将过期时间从 60 秒增加到 60 天,我该怎么做?

这是我的代码

/* creating access token */
$issuedAt = time();
$expirationTime = $issuedAt + 60; // jwt valid for 60 seconds from the issued time
$payload = array('userid' => $phone, 'iat' => $issuedAt, 'exp' => $expirationTime);
$key = "xxxx";
$alg = 'xxxxx';
$tokens = JWT::encode($payload, $key, $alg);

【问题讨论】:

  • 似乎您只需要乘以 60 秒(分钟)x 60 分钟(小时)x 24(天)x 60(总天数)= 5184000。但是,似乎有一个最大值24 小时令牌的过期时间:stackoverflow.com/questions/43594551/…
  • 上述评论的前半部分是真的。但是:@NathanChampion:没有 24 小时限制,即使在链接的 q/a 中,我也没有读到任何关于它的内容。也许有某些实现会强制执行这样的限制,但这不是标准。

标签: php jwt-auth


【解决方案1】:

根据specification,过期时间(exp声称)应该是过期时间的unix时间戳表示(“一个JSON数值,表示从1970-01-01T00:00:00Z UTC 直到指定的 UTC 日期/时间,忽略闰秒”)。

您目前正在使用time() + 60 计算它。这使得它在发布时间后 60 秒。您可以根据需要简单地更改它:

/* creating access token */
$issuedAt = time();
// jwt valid for 60 days (60 seconds * 60 minutes * 24 hours * 60 days)
$expirationTime = $issuedAt + 60 * 60 * 24 * 60;
$payload = array(
  'userid' => $phone,
  'iat' => $issuedAt,
  'exp' => $expirationTime,
);
$key = "xxxx";
$alg = 'xxxxx';
$tokens = JWT::encode($payload, $key, $alg);

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多