/seven-sso

1. 本项目模块化鲜明、代码简洁、功能小巧、配置灵活,是一个易于上手进行二次开发和快速构建企业内部统一用户认证中心服务的组件。 2. 本项目对服务端session的缓存提供了多种实现方式,如redis的实现方式就多达4种,可基于灵活的配置适配redis的各种部署方式。 3. 本项目配套文档齐全,包括项目模块图、项目的软件设计、项目的接口文档及相关单点登录的序列图说明等。

Primary LanguageJavaMIT LicenseMIT

seven-sso

介绍

    用7这个数字,是因为我儿子是七夕出生的,就是单存觉得7这个数字很nice。开源的sso框架有很多,公司的、个人的,
优秀的很多。那为什么我又要搞个呢?因为我对单点登录的流程太过于熟悉了,以至于太想把自己的想法通过代码的方式给呈
现出来,代码秉承简洁易懂的原则不做作不搞什么花里胡哨,因为很纯粹的用户认证就那么点功能搞那么复杂干嘛,就算搞复杂,
后面随随便便开个分支不就开干了!最最最重要的是代码没什么神秘感,你说它有价值吗,有,你说能它能创造价值吗,那可不
一定。因为同类型的开源项目多了去了,不差我这一个,之所以选择开源,一是对我自己写的东西的尊重,二是放出来,让更多人
参与进来,不管是star也好,fork也好,学习借鉴也好,只要本项目能够帮助到你,我开源的目的就达到了。虽然不是什么好项目,
但毕竟也是一个个abcd敲出来的,如果你在学习和使用的过程中发现很多问题,欢迎前来指正!

    本项目模块化鲜明,配置极度灵活,Session缓存的实现方式考虑的很周到,基本上使用者只需要简单配置一下就可以轻松
实现Session的缓存功能,如redis的实现方式就多达4种,可基于灵活的配置适配redis的各种部署方式。项目的模块配置也是
极力遵循SpringBoot提出的"约定大于配置",采用了自动装配技术,从而省去了使用者引入相应模块需要做过多bean扫描配置
的时间。同时,项目配套的文档也比较齐全:如项目模块图、项目软件设计、项目单点登录流程(序列)图、项目接口文档、项目
配套的前端测试站点等也应有就有,且所有的文档都能在项目源码包中找到(不藏着掖着)。

    最后,务必要多调试代码多揣摩时序图,这一点非常非常重要!其次,整个项目所有的资源文件全部在根目录下的src/main
下的resources目录下,包括接口文档源文件(可二次修改,基于apidoc自动生成)、数据库脚本、ea软件建模设计文件、项目
测效果截图及单点登录分别在local和client模式下的时序图等。

项目技术栈

后端
  • SpringBoot 2.2.2.RELEASE
  • Mybatis 3.4.6
  • Tk.Mybatis.SpringBoot 2.1.5
  • PageHelper.SpringBoot 1.2.10
  • Jedis 3.1.0
  • Expiringmap 0.5.9
  • JWT 3.8.0
  • PostgreSql 42.2.5
  • Lombok 1.18.10
前端
  • React 17.0.2
  • DvaJs 2.6.0-beta.22
  • React-Router-Dom v5 (dva模块中自带)
  • AntD 4.21.0
  • Axios 0.27.2
  • TypeScript 4.4.2
  • Craco 6.4.3 (打包模块)

项目模块图

Seven-SSO模块图

项目核心业务模块设计

Seven-SSO模块图

单点登录流程时序图

Client模块

原图地址:https://www.processon.com/view/link/62d4e7671efad4037a117c03 Seven-SSOClient

Local模块

原图地址:https://www.processon.com/view/link/62d4e7970e3e74607275dfc7 Seven-SSOLocal

项目接口文档

Seven-SSO接口文档

使用说明

  1. git clone xxxxx
  2. mvn clean package -DskipTests=true
  3. 分别启动seven-sso-server、seven-auth-client和seven-auth-admin模块服务
  4. 浏览器访问地址:http://localhost:8866
  5. 按照用户注册,用户登录进行流程测试即可!
  6. 具体可以参考我的博文:https://blog.csdn.net/Appleyk/article/details/125838806

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request
  5. 如果你提交的request对项目有用,我会merge的