在 PHP 中使用 JWT(JSON Web Token)可以通过一些库来简化操作。最常用的库之一是 firebase/php-jwt。下面是一个简单的示例,展示如何生成和验证 JWT。


安装 firebase/php-jwt

首先,确保你已经安装了 Composer。然后在你的项目中运行以下命令来安装 firebase/php-jwt:


composer require firebase/php-jwt


生成 JWT

以下是一个生成 JWT 的示例:

<?php

require 'vendor/autoload.php';


use \Firebase\JWT\JWT;


$key = "your_secret_key"; // 替换为你的密钥

$payload = [

    "iss" => "http://yourdomain.com", // 发行者

    "aud" => "http://yourdomain.com", // 接收者

    "iat" => time(), // 签发时间

    "exp" => time() + 3600, // 过期时间(1小时)

    "data" => [

        "userId" => 123, // 用户ID

        "username" => "exampleUser" // 用户名

    ]

];


// 生成 JWT

$jwt = JWT::encode($payload, $key);

echo "Generated JWT: " . $jwt;

?>

验证 JWT

以下是一个验证 JWT 的示例:

<?php

require 'vendor/autoload.php';


use \Firebase\JWT\JWT;

use \Firebase\JWT\ExpiredException;


$key = "your_secret_key"; // 替换为你的密钥

$jwt = "your_jwt_token"; // 替换为你要验证的 JWT


try {

    // 解码 JWT

    $decoded = JWT::decode($jwt, $key, ['HS256']);

    print_r($decoded);

} catch (ExpiredException $e) {

    echo "Token has expired.";

} catch (Exception $e) {

    echo "Error decoding token: " . $e->getMessage();

}

?>

注意事项

密钥管理:确保你的密钥安全,不要在代码中硬编码敏感信息。可以考虑使用环境变量来存储密钥。

过期时间:合理设置 JWT 的过期时间,避免长期有效的令牌带来的安全风险。

HTTPS:在生产环境中,确保通过 HTTPS 传输 JWT,以防止中间人攻击。

以上是一个简单的 PHP JWT 使用示例,你可以根据自己的需求进行扩展和修改。