当前位置: 首页> 最新文章列表> 使用 JWT(JSON Web Token) 实现 PHP 安全验证

使用 JWT(JSON Web Token) 实现 PHP 安全验证

M66 2025-06-04

PHP 中的 JWT 简介

JWT(JSON Web Token)是一种广泛应用于身份验证和信息交换的开放标准,它由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。JWT 可用于在客户端和服务器之间安全地传递用户身份数据。

PHP 项目中集成 JWT 的准备工作

在 PHP 中集成 JWT 功能非常简单,推荐使用 Firebase JWT 提供的官方 PHP 库。通过 Composer 安装该库:

composer require firebase/php-jwt

生成 JWT 的示例代码

以下是生成 JWT 的标准方式,包含用户的基本身份信息:


<?php

require_once 'vendor/autoload.php';

use Firebase\JWT\JWT;

// 定义密钥
$key = "密钥";

// 构建用户数据载荷
$payload = array(
    "iss" => "example.org",
    "sub" => "user_id",
    "name" => "John Doe"
);

// 生成 JWT
$jwt = JWT::encode($payload, $key);
echo $jwt;

?>

此代码中,我们引入了 Firebase JWT 库,并使用 JWT::encode() 方法生成一个包含用户信息的 JWT 字符串。

验证 JWT 的实现方式

在用户请求时,需要验证其提供的 JWT 是否有效,以下是验证的示例代码:


<?php

require_once 'vendor/autoload.php';

use Firebase\JWT\JWT;

// 假设收到的 JWT
$jwt = "JWT";

// 密钥(需与生成时一致)
$key = "密钥";

try {
    // 验证并解码 JWT
    $decoded = JWT::decode($jwt, $key, array('HS256'));

    // 输出解码后的用户信息
    echo "用户ID: " . $decoded->sub . "<br>";
    echo "用户名: " . $decoded->name . "<br>";

} catch (Exception $e) {
    echo '验证失败:' . $e->getMessage();
}

?>

该段代码中,我们接收到客户端传递的 JWT,通过指定的密钥进行签名验证,并使用 JWT::decode() 方法提取用户信息。如果令牌无效,将抛出异常并输出错误信息。

总结

使用 JWT 可以让 PHP 应用更安全地进行用户身份认证和数据传输。借助 Firebase JWT PHP 库,开发者可以快速集成基于令牌的安全认证机制,实现轻量、高效的权限管理。