Henry's Blog

什麼是 JWT

不同於傳統 token,JWT 不需要存在資料庫,而是將資料直接存在 JWT

JWT 看起來像是這樣

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxODQsImlhdCI6MTYxNTYxNTQwMCwiZXhwIjoxNjE4MjA3NDAwfQ.YYsQXUL5AFXQ2KGS5ycNjT-fS9_OtdsFDOEVLU3QDF4

JWT 看起來像是一串亂數字串,其實是由 base 64 編譯過並分成三部分:

{
  "alg": "HS256",
  "typ": "JWT"
}

JWT vs. session id

傳統的登入驗證方式是在 cookie 存 session id,並在發送請求時一併發出,然後比對與資料庫儲存的 session id 是否相同,如果相同代表登入成功

但 session id 的缺點是需要在資料庫儲存 token,一方面需要更多儲存空間,另一方面當同時間許多用戶登入時,會造成資料庫塞車,而 JWT 正解決了此問題

JWT 資料都儲存在 jwt token 當中,所以不需要另外儲存

Reference