Skip to content

Springboot单点登录权限系统,权限按钮级、修改实时生效、支持分布式

Notifications You must be signed in to change notification settings

qhj1610/smart-sso

 
 

Repository files navigation

smart-sso

License PRs Welcome GitHub stars GitHub forks

QQ交流群:454343484🈵、769134727(提供开发工具下载)

简述

   smart-sso定位用当下最流行的SpringBoot + Spring + Mybatis技术,为您构建一个易理解、高可用、高扩展性的单点登录权限管理应用基层,方便实现快速开发。权限按钮级(可控制到Controller中方法)、支持分布式(Spring + Redis提供分布式Session)。

部署文档

组织结构

smart-sso
├── smart-sso-client -- 客户端依赖包,提供登录认证、授权管理
├── smart-sso-demo -- 客户端
├── smart-sso-server -- 服务端

技术选型

后端

  • JDK:1.8+
  • 数据库:Mysql
  • 项目构建工具:Maven 3.3.3
  • API文档:Springfox-Swagger2 2.6.1
  • MVC框架:SpringBoot 2.1.0.RELEASE
  • 核心框架:Spring 5.1.2.RELEASE
  • ORM框架:MyBatis 3.5.1
  • RPC框架:hessian 4.0.38
  • JSON工具:Fastjson 1.2.69
  • 数据库连接池:Druid 1.0.15
  • 日志管理:SLF4J 1.7.21
  • 单点登录:极简基于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的<context:property-placeholder />标签注入,简化配置。(毕竟当今大部分Java项目都会用到Spring框架)

耦合度

  • Shiro:大家更多是熟悉通过annotation或者配置文件的方式去控制权限,有相对较低的耦合。
  • Smart:将权限集中管理在权限系统,需要的时候配置Filter,几乎无耦合。

权限变动服务重启

  • Shiro:通过annotation或者配置文件配置的权限,修改都需要重启服务。
  • Smart:权限的修改通过MQ广播(可选配),服务无需重启。

分布式部署

  • Shiro:通常大家部署依赖Shiro注入的RedisSession。
  • Smart:通过大家更为常用的Spring,覆盖HttpSession注入RedisSession。

注:Cas和Shiro的风光伟绩就无需笔者在此多加吹捧,现在只是关起门来聊聊Smart的优势,当然个人的理解和知识面也有限,有描述不对的地方,也欢迎大家加群探讨。友善!勿喷!谢谢!

架构图

架构图

单点登录原理

单点登录原理

单点退出原理

单点退出原理

数据库模型

数据库模型

效果展示

代码展示

API文档

API文档

Dubbo监控页

单点登录页

权限管理页

手机浏览器展示

作者寄语

艺术地做好一件擅长的事

About

Springboot单点登录权限系统,权限按钮级、修改实时生效、支持分布式

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 89.4%
  • Less 10.6%