系列: 不要再說你不會後端!30 天 Node.js 降維打擊指南
前情提要: 在 Day 16 中,我們介紹了如何使用 Bcrypt 對密碼進行加鹽雜湊與驗證。當使用者成功登入後,後端必須發放一個「通行證」,讓前端在後續的請求中證明自己的身份。今天我們要介紹現代前後端分離架構最主流的無狀態認證工具——JWT (JSON Web Token)。
在傳統 Web 開發中,常用的身份驗證機制是 Session + Cookie;而在前後端分離或微服務架構中,JWT 成為了首選:
| 特性 | Session / Cookie 認證 | JWT (JSON Web Token) 認證 |
|---|---|---|
| 狀態維護 | Stateful(伺服器需儲存 Session 紀錄) | Stateless(伺服器不留存狀態,憑證自包含) |
| 擴充性 | 多台伺服器時需做 Session 共享 (如 Redis) | 極佳,任何伺服器只要有金鑰即可驗證 |
| 跨網域/移動端 | Cookie 受限於同源政策 (CORS/Cross-Site) | 通用性高,放在 Request Header (Authorization) |
JWT 是一個由兩個點號 (.) 連接的字串,由三個部分組成:
[Header 標頭].[Payload 負載].[Signature 簽名]