# JSON Web Token(JWT) - 使用者登入成功之後,系統產生 JWT 後,前端存入 Cookie - 為什麼不存入 Local Storge? - 可以用 JS 拿到資料,這樣安全性會不夠 - 做一點避免被盜用的準備:Payload 放上 user IP address - 有效期間:____ (待討論) - 除了登入/註冊以外的 API 都必須帶 JWT 做驗證,而 API 在驗證完成之後也會回一個新的 JWT => - 不確定這樣是不是太頻繁 - 還是讓系統檢查快到期的 JWT 才會發新的? - 答案:要用 access_token & refresh_token 機制處理這件事情 ## Access token & Refresh token - 用 AJAX Request 攔截器 (interceptor) ,檢查 API 回傳的錯誤訊息 - 使用此設計必須要確認每一隻 API 跟 access token 有關的檢查噴錯的 error code 都有按照此機制規劃 - Access token 有效期限 5 分鐘 - Refresh token 有效期限 60 分鐘 - 401 - access token 失效, refresh token 有效 => 呼叫 /refresh-token, 取得新的 access token - access token 失效, refresh token 失效 => 要求使用者重新登入 ### 流程 login/register: 新增 access_token, refresh_token 並且將基本資料放到 localstorge 中 編輯會員資料: 更新 localstorge logout/access token+refresh token 失效: 移除 access_token, refresh_token, localstorge ref: - [JWT從入門到放棄](http://slashview.com/archive2020/20200416.html) - [[筆記] 透過 JWT 實作驗證機制](https://medium.com/%E9%BA%A5%E5%85%8B%E7%9A%84%E5%8D%8A%E8%B7%AF%E5%87%BA%E5%AE%B6%E7%AD%86%E8%A8%98/%E7%AD%86%E8%A8%98-%E9%80%8F%E9%81%8E-jwt-%E5%AF%A6%E4%BD%9C%E9%A9%97%E8%AD%89%E6%A9%9F%E5%88%B6-2e64d72594f8) - JWT 用途 - [JWT (JSON WEB Token)正確使用場景](https://www.itread01.com/content/1534777332.html) - [[Web] 以 axios 實踐前端 refresh token 機制](https://dotblogs.com.tw/wasichris/2020/10/25/223728)