在PHP中,使用JSON Web Tokens(JWT)时,可以通过在生成令牌时设置exp
声明来指定过期时间。exp
声明代表令牌的过期时间,它是一个UNIX时间戳。以下是一个使用firebase/php-jwt
库生成带有过期时间的JWT的示例:
首先,确保已经安装了firebase/php-jwt
库。如果尚未安装,可以使用Composer进行安装:
composer require firebase/php-jwt
然后,使用以下代码生成一个带有过期时间的JWT:
require_once 'vendor/autoload.php';
use \Firebase\JWT\JWT;
use \Firebase\JWT\Key;
// 秘钥,用于签名和验证令牌
$key = "your-secret-key";
// 载荷数据,可以包含任何需要的信息
$payload = array(
"iss" => "http://example.org",
"iat" => time(), // 令牌的签发时间
"exp" => time() + 3600, // 令牌的过期时间,单位:秒。这里设置为1小时后过期
"data" => array(
"userId" => 12345,
"username" => "exampleUser"
)
);
// 生成JWT
$jwt = JWT::encode($payload, $key, 'HS256');
echo "Generated JWT: " . $jwt . "\n";
在这个示例中,我们设置了一个1小时后过期的JWT。time()
函数返回当前的UNIX时间戳,所以exp
声明的值将是当前时间戳加上3600秒(1小时)。你可以根据需要调整过期时间。