登入流程
- 前端登入傳輸使用者名稱和md5加密後的密碼
- 後端對密碼在進行md5加密,或者使用md5加密的密碼 + id 進行鹽加密,增加密碼被破解的難度。
- 登入成功後,這裡分成單體,或者分散式的情況
- 單體
- 單體比較簡單,登入成功後,在後端在 session 裡面 setAttribute 存入使用者資訊。
- 後續登入在攔截器獲取session ,查詢session。
- 伺服器叢集、伺服器分散式
- 存在 session 共享的問題。使用 jwt 解決問題,使用ip,使用者資訊生成 token 值,返回給前端。
- 在登入攔截器,解析每次傳過來的token,匹配ip 和使用者資訊,使用者資訊與資料庫校驗。但是都查資料庫,會增加資料庫壓力,所以也可以把 token 存入redis裡面,解析後用戶資訊和 redis 裡的token 資訊檢驗。
- 單體
有選擇性使用驗證登入資訊
- 對於http請求來說,有的請求需要登入後才能訪問,有的不需要登入後就能直接訪問,這裡使用註解的方式,在需要登入才能訪問的介面使用自定義註解 @login,註解在類或方法上。當客戶端請求後端介面,如果類或方法上沒有login註解,則不會坐使用者資訊校驗。
總結
前端密碼使用 md5 密碼傳輸到後端,後端對密碼進行鹽加密。針對分散式服務,或者叢集服務,使用jwt生成token,進行後續資料校驗,後續資料校驗一般使用攔截器校驗。針對不是所有介面都需資料校驗,在需要登入後才能訪問的介面,在類上新增login註解,沒有添加註解的類不進行資料校驗。