當前位置: 首頁> 最新文章列表> 在ThinkPHP6中實現JWT認證:完整教程與代碼示例

在ThinkPHP6中實現JWT認證:完整教程與代碼示例

gitbox 2025-06-18

1. 什麼是JWT

JSON Web Token(JWT)是一種開放標準(RFC 7519),用於在網絡上傳輸信息。 JWT由三部分組成:頭部(Header)、載荷(Payload)和簽名(Signature)。頭部包含令牌類型和簽名算法,載荷保存需要傳輸的數據,簽名則用來驗證令牌的真實性。

2. JWT在ThinkPHP6中的使用

在ThinkPHP6中使用JWT,首先需要通過在composer.json文件中引入think-jwt組件來實現。在該文件的require節點添加"think-jwt": "1.0.*",然後執行composer update命令以安裝該組件。

2.1 生成JWT

在ThinkPHP6中,可以通過JWT類來生成JWT。首先,需要創建一個jwt.php配置文件,該文件包含了JWT相關配置項。

        return [
            // 簽名密鑰'secret' => 'my_secret',
            // 過期時間,單位為秒,默認為1小時'expire' => 3600,
        ];
    

然後,在控制器中引入JWT類,並使用create方法來生成JWT。

        use think\jwt\JWT;

        class UserController extends Controller {
            public function login() {
                // 驗證用戶名和密碼...
                
                // 生成JWT
                $payload = [
                    'user_id' => $user->id
                ];
                $jwt = JWT::create($payload);
                
                return ['token' => $jwt];
            }
        }
    

上述代碼中,首先驗證用戶名和密碼,通過驗證後生成JWT並返回給客戶端。

2.2 驗證JWT

在ThinkPHP6中,可以通過JWT類的verify方法來驗證JWT的有效性。

        use think\jwt\JWT;

        class UserController extends Controller {
            public function profile() {
                // 驗證JWT
                $jwt = input('token');
                $payload = JWT::verify($jwt);
                
                return ['user_id' => $payload['user_id']];
            }
        }
    

上述代碼中,首先從客戶端獲取JWT,然後調用verify方法進行驗證。驗證通過後,可以獲取JWT中的payload數據。

3. 總結

通過本文,我們了解了JWT的基本概念和在ThinkPHP6中的使用方法。使用JWT進行認證能夠有效提高接口的安全性,防止未經授權的訪問。在實際開發中,開發者可以根據需求調整JWT配置,滿足項目的安全需求。