当前位置:首页 > 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)。

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 过期或无效)。

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 密钥对并指定公钥和私钥。

jwt php实现

$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实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移除…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

php实现文件的下载

php实现文件的下载

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

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUEST_…