隨著現代網路應用程式的不斷發展,身份驗證和安全性變得越來越重要。其中一種流行的方法是使用JWT(JSON Web Tokens)令牌進行身份驗證。本文將向您介紹使用PHP實作JWT令牌的基礎知識和技術。
JWT是一個開放式標準,定義了一種方式,透過在網路上傳輸JSON物件來安全有效地將聲明進行傳輸。 JWT由三個部分組成:頭,載荷和簽名。頭部包含令牌的類型和使用的雜湊演算法,載荷包含身份驗證和授權訊息,簽名是將頭部和載荷散列以及密鑰組合成的字串。
JWT支援無狀態的、伺服器端的身份驗證,避免了需要使用伺服器的session或cookie。而且很容易擴展,因為它是一個標準化的JSON格式。
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);
如果令牌能夠成功解碼,那麼你的程式碼將輸出與載重中相同的關聯數組。如果認證失敗,則會拋出異常。
本文介紹如何使用PHP實作JWT令牌。 JWT是一個簡單而有用的工具,可以讓您的應用程式更安全,並且能夠避免使用傳統的會話機制。我們希望這篇文章能夠幫助你更了解JWT以及如何在PHP應用程式中使用它。
以上是PHP入門指南:JWT令牌的詳細內容。更多資訊請關注PHP中文網其他相關文章!