当前位置:首页 > 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小时),刷新令牌可设置较长时间。

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

jwt php实现

标签: jwtphp
分享给朋友:

相关文章

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Rat…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。…

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searc…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $imag…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT A…