1. 程式人生 > >Java單點登入許可權系統(一)—簡介

Java單點登入許可權系統(一)—簡介

開源地址

部署文件

簡述

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文件

API文件

Dubbo監控頁

單點登入頁

許可權管理頁



手機瀏覽器展示




作者寄語

藝術的做好一件擅長的事情