☰
JWT如何设置Token的过期时间?
2026/10/23 19:34:37 网站建设 项目流程

JWT如何设置Token的过期时间?

当我们创建一个JWT(JSON Web Token)时,我们通常会在Token的负载(Payload)部分设置一个exp(Expiration Time)字段,来表示这个Token的过期时间。exp字段的值是一个Unix时间戳,表示Token在什么时间之后不再有效。

底层原理是什么?

JWT是由三部分组成的:Header(头部)、Payload(负载)和Signature(签名)。其中,Payload部分包含了Token的一些声明,比如用户的ID、角色等,以及Token的过期时间。当服务器收到一个JWT时,它会检查这个exp字段,如果当前时间已经超过了exp字段指定的时间,那么这个Token就被认为是过期的,服务器会拒绝处理这个Token对应的请求。

通俗解释

你可以把JWT想象成一张门票,这张门票上有一个“有效期至”的日期。当你拿着这张门票去游乐园时,工作人员会查看门票上的“有效期至”日期。如果日期还没过,你就可以进去玩;如果日期已经过了,工作人员就不会让你进去。这个“有效期至”日期就像是JWT中的exp字段,它告诉服务器这个Token什么时候过期。

完整的PHP实例代码

下面是一个使用PHP创建带有过期时间的JWT的示例代码:

<?php require_once 'vendor/autoload.php'; // 引入JWT库,比如使用firebase/php-jwt use \Firebase\JWT\JWT; $key = "example_key"; // 用于签名的密钥 $payload = array( "user_id" => 12345, "username" => "JohnDoe", "exp" => time() + 3600 // 设置Token在1小时后过期 ); $token = JWT::encode($payload, $key); // 生成JWT echo "JWT: " . $token; // 输出JWT ?>

在这个示例中,我们使用了firebase/php-jwt这个库来生成JWT。在Payload部分,我们设置了一个exp字段,它的值是当前时间加上3600秒(1小时),表示这个Token在1小时后过期。然后,我们使用JWT::encode方法将这个Payload编码成一个JWT,并使用一个密钥进行签名。最后,我们输出了生成的JWT。

注意:在实际应用中,密钥应该是一个安全的、随机的字符串,并且应该妥善保管,不要泄露给其他人。此外,为了安全起见,建议使用HTTPS来传输JWT,以防止中间人攻击。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询