Java單點登入許可權系統(一)—簡介
阿新 • • 發佈:2018-12-31
開源地址
部署文件
簡述
Smart定位用當下最流行的SSM(SpringMVC + Spring + Mybatis)技術,為您構建一個易理解、高可用、高擴充套件性的單點登入許可權管理應用基層,方便實現快速開發。許可權按鈕級(可控制到Controller中方法)、修改實時生效(MQ廣播實現)、支援分散式(Spring + Redis提供分散式Session)。
組織結構
smart
├── smart-mvc -- 公共核心模組(SpringMVC + Spring + Mybatis)
├── smart-sso -- 單點登入許可權系統
├───── smart-sso-client -- 客戶端依賴包,提供登入認證、授權管理
├───── smart-sso-demo -- 客戶端
├───── smart-sso-server -- 服務端
技術選型
後端
- JDK:1.8(支援1.6+)
- 資料庫:Mysql
- 專案構建工具:Maven 3.3.3
- API文件:Springfox-Swagger2 2.6.1
- MVC框架:SpringMVC 4.2.1.RELEASE
- 核心框架:Spring 4.2.1.RELEASE
- ORM框架:MyBatis 3.3.0
- 分散式協調服務:Zookeeper 3.4.7
- 分散式RPC服務:Dubbo 2.5.3(預設Hessian 4.0.38)
- 分散式快取服務:Redis 2.8.12
- 分散式訊息服務:ActiveMQ 5.13.3
- NIO框架:Netty 4.0.23.Final
- JSON工具:Fastjson 1.2.29
- 資料庫連線池:Druid 1.0.15
- 日誌管理:SLF4J 1.7.21、Logback 1.1.7
- 單點登入:極簡基於Cookie實現
前端
瀏覽器相容
- Internet Explorer 11
- Internet Explorer 10
- Internet Explorer 9
- Internet Explorer 8
- Google Chrome 14+
- Firefox 5+
- Safari 5
- Opera 11
- 手機瀏覽器相容
對比Cas + Shiro
請求協議
- Cas:預設https,如果使用http需要把cas server解壓修改配置引數。
- Smart:預設http,可選配為Https,減少配置,降低門檻。
配置層面
- Cas:在web.xml中指定的TicketValidationFilter、AuthenticationFilter及SingleSignOutFilter存在重複的serverName引數,serverName的修改,需要分別修改三處。
- Smart:將serverName定義在properties檔案中,通過Spring的標籤注入,簡化配置。(畢竟當今大部分Java專案都會用到Spring框架)
耦合度
- Shiro:大家更多是熟悉通過annotation或者配置檔案的方式去控制權限,有相對較低的耦合。
- Smart:將許可權集中管理在許可權系統,需要的時候配置Filter,幾乎無耦合。
許可權變動服務重啟
- Shiro:通過annotation或者配置檔案配置的許可權,修改都需要重啟服務。
- Smart:許可權的修改通過MQ廣播(可選配),服務無需重啟。
分散式部署
- Shiro:通常大家部署依賴Shiro注入的RedisSession。
- Smart:通過大家更為常用的Spring,覆蓋HttpSession注入RedisSession。
注:Cas和Shiro的風光偉績就無需筆者在此多加吹捧,現在只是關起門來聊聊Smart的優勢,當然個人的理解和知識面也有限,有描述不對的地方,也歡迎大家加群探討。友善!勿噴!謝謝!
架構圖
單點登入原理
單點退出原理
資料庫模型
效果展示
程式碼展示
API文件
Dubbo監控頁
單點登入頁
許可權管理頁
手機瀏覽器展示
作者寄語
藝術的做好一件擅長的事情