JSON Web Token(JWT)是一種輕量級的身份驗證和授權(quán)機制,通常用于 Web 應(yīng)用和 API 授權(quán)。JWT 將用戶信息包裝成一個包含各種聲明和簽名的 JSON 對象,以確保數(shù)據(jù)的機密性和完整性。JWT 由三個部分組成:頭部、載荷和簽名。頭部描述 JWT 的元數(shù)據(jù),載荷包含用戶信息和其他相關(guān)數(shù)據(jù),簽名則用于驗證數(shù)據(jù)的可信度。
在 PHP 中,我們可以使用 php-jwt 庫來實現(xiàn) JWT 簽名和驗證功能。以下是生成 JWT 的示例代碼:
// 設(shè)置頭部信息 $header = [ 'alg' =>'HS256', // 使用 HMAC SHA-256 算法 'typ' =>'JWT' ]; // 設(shè)置用戶信息 $payload = [ 'id' =>1, 'name' =>'John Doe', 'email' =>'john@example.com' ]; // 使用密鑰生成簽名 $jwt = JWT::encode($payload, $secretKey, 'HS256', null, $header);
在 Vue.js 中使用 JWT 進行身份驗證也十分便捷。我們通常將 JWT 存儲在本地存儲(localStorage)中,并在每次訪問受限資源時進行驗證。以下是 Vue.js 實現(xiàn) JWT 驗證的示例代碼:
// 在請求頭中添加 JWT axios.defaults.headers.common['Authorization'] = `Bearer ${localStorage.getItem('jwt')}`; // 驗證 JWT 是否有效 router.beforeEach((to, from, next) =>{ const jwt = localStorage.getItem('jwt'); if (jwt && jwtDecode(jwt)) { next(); } else { next('/login'); } });
綜上所述,JWT 提供了一種簡單有效的身份驗證和授權(quán)解決方案。在 PHP 和 Vue.js 中使用 JWT 進行身份驗證和授權(quán)非常方便,極大地降低了開發(fā)成本和復(fù)雜度。