当前位置:首页 > PHP

jwt php实现

2026-02-13 22:48:54PHP

JWT PHP 实现方法

安装依赖库

使用 Composer 安装 firebase/php-jwt 库,这是目前 PHP 中最流行的 JWT 实现库。在项目根目录运行以下命令:

composer require firebase/php-jwt

生成 JWT Token

创建一个 PHP 文件,引入自动加载文件并使用库生成 Token:

<?php
require 'vendor/autoload.php';
use \Firebase\JWT\JWT;

$key = "your_secret_key"; // 替换为实际密钥
$payload = [
    "iss" => "http://example.org", // 签发者
    "aud" => "http://example.com", // 接收方
    "iat" => time(), // 签发时间
    "exp" => time() + 3600 // 过期时间(1小时后)
];

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

验证 JWT Token

验证接收到的 Token 是否有效并解码内容:

<?php
require 'vendor/autoload.php';
use \Firebase\JWT\JWT;

$key = "your_secret_key"; // 必须与签发时使用的密钥一致
$jwt = "received_token_here"; // 替换为实际接收到的Token

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

自定义算法支持

该库支持多种算法,包括 HS256、RS256 等。如需使用 RSA 算法:

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

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

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

异常处理

常见的异常类型包括:

  • SignatureInvalidException:签名验证失败
  • BeforeValidException:Token 尚未生效
  • ExpiredException:Token 已过期
  • DomainException:算法不支持或其他域错误

最佳实践

密钥应当足够复杂并定期更换,避免使用简单字符串。生产环境中建议将密钥存储在环境变量中而非代码里。

Token 的过期时间应根据业务需求合理设置,通常访问令牌设置为较短时间(如1小时),刷新令牌可设置较长时间。

jwt php实现

对于敏感操作,每次请求都应验证 Token 的有效性,并考虑实现 Token 的黑名单机制以增强安全性。

标签: jwtphp
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数: $q…

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…