基於Vue+Spring MVC+MyBatis+Shiro+Dubbo開發的分散式後臺管理系統 ...
本文項目代碼:
服務端:https://github.com/lining90567/dubbo-demo-server
前端:https://github.com/lining90567/dubbo-demo-client
最近項目中使用了shiro做許可權管理,在開發過程中也踩了一些坑,於是便有了開發個應用鞏固一下所學知識的想法,正好在開發的過程里學習一下Vue開發。
技術棧方面,現在前後端分離大行其道,於是也採用了前後端分離的模式,前端基於Vue+Element,後端Web基於Spring MVC,用Dubbo提供分散式服務,前端可以部署到nginx,後端Web可以部署到Tomcat、Jetty或Undertow等Servlet容器,Dubbo服務可以作為獨立的java進程運行,這種架構下,各層都比較容易實現橫向擴展,可以根據業務量靈活調節。
分散式服務基於Dubbo框架開發,業務邏輯的實現在該層完成。Dubbo可以和Spring完美集成,其服務註冊與發現機制保證了服務的健壯性和伸縮性,其監控中心可以記錄服務的運行情況和調用次數,可以根據監控數據做出服務實例的增減決策。
Web服務提供前端調用的RESTful api,並負責每次調用的身份認證和鑒權,由於是前後端分離結構,Web端為無狀態設計,使用JWT實現身份認證,基於Shiro編寫RESTful過濾器實現鑒權(在實際開發中發現shiro自帶的rest過濾器在無狀態web環境下會有問題),身份認證和鑒權成功後,調用Dubbo的rpc服務完成業務邏輯。
前端基於Vue+Element開發,用vue-router根據用戶許可權實現動態路由,從而在沒有許可權的情況下即使在瀏覽器中輸入url,也無法調用許可權外的功能,用axios調用RESTful API,在header中攜帶JWT,Web服務根據該Token驗證用戶的身份和許可權。
項目代碼:
服務端:https://github.com/lining90567/dubbo-demo-server
前端:https://github.com/lining90567/dubbo-demo-client