1. 程式人生 > >專案重構之JWT代替session

專案重構之JWT代替session

專案重構前

公司的專案以springcloud做微服務開發,那麼多個微服務專案怎麼儲存登入狀態呢?不可能會員專案、商城專案、患者專案都要跳轉微服務端信登入一次。

之前考慮的是sso單點登入,採用開源的cas框架。架構圖如下:

這樣也解決了微信登入的回撥url只能設定一個的問題。

專案重構後

在公司決定重構專案後,架構師指出微服務去session也是重構的一部分,使用JWT代替session有一些好處,我總結如下:

  1. 去session,減少服務端記憶體開銷。
  2. 去sso單點登入,減少維護專案,減少程式碼量。
  3. 減化登入流程,減少跳轉次數。
  4. 解決更新使用者資訊後,可能導致的各專案儲存的session不一致的問題(當然這個問題可以通過redis統一儲存session解決,使用JWT就減少了redis的開銷)。
  5. 後期可以將JWT解密和許可權校驗放在SpringCloud的閘道器zuul中,進一步解耦微服務。
  6. 使用閘道器後,微服務可以完全做成無狀態的服務。

另外,有點可惜的是之前的單點登入專案被廢棄,白做了。

下一節介紹JWT在專案中的使用。