首页 > 解决方案 > PHP JWT 过期问题

问题描述

我是 JWT 的新手,所以提前道歉。

我正在使用php-jwt库。

标头

include_once("includes/jwt/BeforeValidException.php");
include_once("includes/jwt/ExpiredException.php");
include_once("includes/jwt/JWK.php");
include_once("includes/jwt/JWT.php");
include_once("includes/jwt/SignatureInvalidException.php");


header("Access-Control-Allow-Origin: *");
header("Access-Control-Request-Headers: GET,POST,OPTIONS,DELETE,PUT");
header('Access-Control-Allow-Headers: Authorization, Accept,Accept-Language,Content-Language,Content-Type');

我正在使用以下内容生成令牌:

$secret_key = "***";
$issuer_claim = "***";
$audience_claim = "***";
$issuedat_claim = time(); // issued at
$notbefore_claim = $issuedat_claim; //not useable before in seconds
$expire_claim = time() + (60*60); // expire time in seconds
$token = array(
    "iss" => $issuer_claim,
    "aud" => $audience_claim,
    "iat" => $issuedat_claim,
    "nbf" => $notbefore_claim,
    "exp" => $expire_claim,
);
$jwt = JWT::encode($token, $secret_key);

但是,当我使用jwt.io上的工具解码生成的令牌时,它显示该令牌将在 5 分钟内过期。

{
  "iss": "***",
  "aud": "***",
  "iat": 1600925201,
  "nbf": 1600925201,
  "exp": 1600925501
}

你能指导我如何增加到期时间吗?即使在有效负载中我指定了 60 分钟,但令牌仅在 5 分钟内有效。

其次,我想知道如何为活跃的用户保持令牌活着。例如,一个保持不活动状态 60 分钟的用户,令牌应该过期。但是,不应注销正在使用网站/网络应用程序的用户,因为他可能正处于某些事情的中间,而突然注销会破坏流程。我已经阅读了这方面的刷新令牌,如果您认为这是可以采用的方法,如果您能分享一些关于这方面的教程,我将不胜感激,因为我还没有找到任何可以很好地理解如何执行的教程.

提前致谢。

标签: phpjwtjwt-authphp-jwt

解决方案


推荐阅读