問題
RESTful API 設計中若禁用 Cookie,如何實作會話管理?
建議方案
- JWT(JSON Web Token):登入後伺服器簽發 Token,客戶端在每次請求的
Authorization 標頭中攜帶。
- Token 放在 URL 參數:不建議,因為 URL 可能被記錄在記錄檔與瀏覽器歷史紀錄中,安全性較低。
- 無狀態伺服器:伺服器不儲存 Session,所有驗證資訊都在 Token 中,利於擴展與叢集部署。
實作重點
- 客戶端登入後儲存 Token(例如 localStorage)。
- 每次請求以
Authorization: Bearer <token> 傳送。
- 伺服器驗證 Token 簽章與到期時間。
- 設定 Token 過期時間並支援刷新機制。