首頁 >後端開發 >php教程 >PHP入門指南:JWT令牌

PHP入門指南:JWT令牌

PHPz
PHPz原創
2023-05-21 08:07:351435瀏覽

隨著現代網路應用程式的不斷發展,身份驗證和安全性變得越來越重要。其中一種流行的方法是使用JWT(JSON Web Tokens)令牌進行身份驗證。本文將向您介紹使用PHP實作JWT令牌的基礎知識和技術。

  1. JWT令牌概述

JWT是一個開放式標準,定義了一種方式,透過在網路上傳輸JSON物件來安全有效地將聲明進行傳輸。 JWT由三個部分組成:頭,載荷和簽名。頭部包含令牌的類型和使用的雜湊演算法,載荷包含身份驗證和授權訊息,簽名是將頭部和載荷散列以及密鑰組合成的字串。

JWT支援無狀態的、伺服器端的身份驗證,避免了需要使用伺服器的session或cookie。而且很容易擴展,因為它是一個標準化的JSON格式。

  1. PHP實作過程

PHP語言提供了許多類別可以輕鬆地產生、驗證JWT標記。在PHP中建立JWT需要使用一個函式庫,我們這裡使用php-jwt函式庫,可在GitHub上免費取得。

安裝php-jwt函式庫:
composer require firebase/php-jwt

建立JWT令牌很簡單,以下是範例程式碼:

require_once('vendor/autoload.php');
use FirebaseJWTJWT;

$key = "example_key";
$payload = array(
    "iss" => "http://example.org",
    "aud" => "http://example.com",
    "iat" => 1356999524,
    "nbf" => 1357000000
);

$jwt = JWT::encode($payload, $key);
print_r($jwt);

在這個例子中,我們使用了一個金鑰example_key和一些線索,例如該令牌的簽發人iss,以及可以使用該令牌的接收者aud 。我們也定義了JWT的生命週期,在令牌簽發時間iat之後和比目前時間點nbf之前應該可以使用。

JWT的最終結果是一串長字串,形式為AAA.BBB.CCC。 AAA是頭部,BBB是載重,CCC是簽名,由金鑰產生。

驗證JWT令牌需要使用相同的金鑰,範例程式碼如下:

require_once('vendor/autoload.php');
use FirebaseJWTJWT;

$key = "example_key";
$jwt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vZXhhbXBsZS5vcmciLCJhdWQiOiJodHRwOi8vZXhhbXBsZS5jb20iLCJpYXQiOjEzNTY5OTk1MjQsIm5iZiI6MTM1NzAwMDAwMCwiZXhwIjoxMzU3MDAwMDAwfQ.kn4N5lvvvdQhL7rEixJOaYWKQZ3GzrCc8REIzc2Kw8c";

$decoded = JWT::decode($jwt, $key, array('HS256'));

print_r($decoded);

如果令牌能夠成功解碼,那麼你的程式碼將輸出與載重中相同的關聯數組。如果認證失敗,則會拋出異常。

  1. 結論

本文介紹如何使用PHP實作JWT令牌。 JWT是一個簡單而有用的工具,可以讓您的應用程式更安全,並且能夠避免使用傳統的會話機制。我們希望這篇文章能夠幫助你更了解JWT以及如何在PHP應用程式中使用它。

以上是PHP入門指南:JWT令牌的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn