当前位置:首页 > PHP

jwt php实现

2026-04-03 06:27:11PHP

JWT PHP 实现

安装依赖库

使用 Composer 安装 firebase/php-jwt 库,这是 PHP 中常用的 JWT 实现工具。

composer require firebase/php-jwt

生成 JWT Token

使用 Firebase\JWT\JWT 类生成 JWT Token。需要指定密钥(secret key)、payload(数据)和算法(如 HS256)。

jwt php实现

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::decode 方法验证 Token 并解码 payload。需捕获可能的异常(如 Token 过期或无效)。

jwt php实现

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

刷新 Token

在 Token 快过期时,可以生成新的 Token 并返回给客户端。

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

使用 RS256 算法

如果需要非对称加密(如 RS256),需生成 RSA 密钥对并指定公钥和私钥。

$privateKey = file_get_contents('path/to/private.key');
$publicKey = file_get_contents('path/to/public.key');

$jwt = JWT::encode($payload, $privateKey, 'RS256');
$decoded = JWT::decode($jwt, new Key($publicKey, 'RS256'));

注意事项

  • 密钥(secret key 或 RSA 密钥)需妥善保管,避免泄露。
  • Token 的有效期(exp)应根据业务需求合理设置。
  • 捕获异常时区分不同错误类型(如 ExpiredExceptionSignatureInvalidException)。

标签: jwtphp
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

文件上传的基本实现 在PHP中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。 创…

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…