近期正參加六角學院的 Node.js 2022 直播班,想說做個紀錄並當作複習之用。這邊筆記下關於 JWT Token 登入註冊功能的細節。
課程相關資訊
[連結]:https://www.hexschool.com/courses/nodejs.html
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
核心概念
1. JWT 是無狀態的
2. 如果你透過 server 設定了過多的 session,那會對 server 造成負擔
3. 密碼是不會存明碼的,會把它變成無法辨識的 Code
4. 需要新增 JWT_SECRET 當做混淆字串;JWT_EXPIRES_<請自訂> 當做過期時間參數
5. 由於產生 JWT token 和驗證 token 都是很多路由都會使用到的,可以存成共用函式或是 middleware
6. 前後端都需要進行驗證,以阻擋惡意的字串或是意料之外的錯誤
7. 可以透過 jwt.io 的工具,看一下 encode 和 decode 的結果
8. payload 是可以被解密的,所以不要放機密資料如 email, password…等
9. 註冊成功後,多半會進行兩階段登入驗證,或是請它重新登入
10. JWT 的驗證,它是不需要在前台、後台記憶體存放 session 來進行登入驗證
11. 若有需要 isAdmin,邏輯跟 JWT 驗證很像 -> 檢查 req.user 是否有相關的角色代碼
12. 只要一旦發出 JWT,它就無法設定過期。如果真有需要,那就需要額外在 DB 設定