當前位置: 首頁> 最新文章列表> 使用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 庫,開發者可以快速集成基於令牌的安全認證機制,實現輕量、高效的權限管理。