当前位置:首页 > PHP

jwt php 实现

2026-03-12 21:10:18PHP

JWT PHP 实现

安装依赖库

使用 Composer 安装 firebase/php-jwt 库,这是一个流行的 JWT 实现库。运行以下命令:

composer require firebase/php-jwt

生成 JWT Token

在 PHP 中生成 JWT Token 需要指定 payload 和密钥。以下是一个示例代码:

use Firebase\JWT\JWT;
use Firebase\JWT\Key;

$key = 'your-secret-key';
$payload = [
    'iss' => 'your-issuer',
    'aud' => 'your-audience',
    'iat' => time(),
    'exp' => time() + 3600, // Token 有效期 1 小时
    'data' => [
        'user_id' => 123,
        'username' => 'example_user'
    ]
];

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

验证 JWT Token

验证 JWT Token 需要解码并检查签名和有效期:

try {
    $decoded = JWT::decode($jwt, new Key($key, 'HS256'));
    print_r($decoded);
} catch (Exception $e) {
    echo 'Token 验证失败: ', $e->getMessage();
}

自定义算法

firebase/php-jwt 支持多种算法,如 HS256、RS256 等。如果需要使用 RS256,需要提供 RSA 公私钥:

$privateKey = '-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----';

$publicKey = '-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----';

// 生成 Token
$jwt = JWT::encode($payload, $privateKey, 'RS256');

// 验证 Token
$decoded = JWT::decode($jwt, new Key($publicKey, 'RS256'));

处理异常

JWT 验证可能抛出多种异常,如签名无效、Token 过期等。捕获并处理这些异常:

try {
    $decoded = JWT::decode($jwt, new Key($key, 'HS256'));
} catch (Firebase\JWT\SignatureInvalidException $e) {
    echo '签名无效';
} catch (Firebase\JWT\BeforeValidException $e) {
    echo 'Token 尚未生效';
} catch (Firebase\JWT\ExpiredException $e) {
    echo 'Token 已过期';
} catch (Exception $e) {
    echo '其他错误: ', $e->getMessage();
}

刷新 Token

如果需要刷新 Token,可以检查剩余有效期并重新生成:

jwt php 实现

$decoded = JWT::decode($jwt, new Key($key, 'HS256'));
if ($decoded->exp - time() < 300) { // 剩余 5 分钟时刷新
    $payload['iat'] = time();
    $payload['exp'] = time() + 3600;
    $newJwt = JWT::encode($payload, $key, 'HS256');
}

通过以上步骤,可以在 PHP 中实现 JWT 的生成、验证和管理。确保密钥安全并合理设置 Token 有效期以增强安全性。

标签: jwtphp
分享给朋友:

相关文章

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php实现mvc

php实现mvc

PHP 实现 MVC 架构 MVC(Model-View-Controller)是一种常用的软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller…