當前位置: 首頁> 最新文章列表> 在ThinkPHP6中實現JWT認證:全面教程與實戰代碼

在ThinkPHP6中實現JWT認證:全面教程與實戰代碼

gitbox 2025-06-18

1. 什麼是JWT

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

2. JWT在ThinkPHP6中的使用

在ThinkPHP6中,可以通過引入think-jwt組件來實現JWT認證。只需在composer.json文件中添加相應依賴並安裝即可。

{
    "require": {
        "think-jwt": "1.0.*"
    }
}

安裝完成後,可以通過以下代碼進行JWT認證:

2.1 生成JWT

在ThinkPHP6中,通過JWT類生成JWT。首先,您需要創建一個`jwt.php`配置文件,其中包含JWT的相關配置項。該文件應位於`config`目錄下。

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類來驗證JWT的有效性。在控制器中引入JWT類,並調用`verify`方法進行驗證。

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認證可以有效保護接口安全,防止未經授權的訪問。開發者可以根據項目需求進行自定義配置,確保認證機制的安全性與靈活性。