简单的权限管理小工具详细设计
一、项目结构
// 通用的核心类
webcenter-core
// 提供的接口
webcenter-api
// 只要的业务逻辑,项目通过集成core、api、admin即可实现简单的单系统权限框架
webcenter-admin
// 审核流,项目集成core、api、admin、review接口实现审核流功能
webcenter-review
// 控制台,项目通过集成core、api、admin、console即可实现web中心的单点登录功能
webcenter-console
// 提供ui页面
webcenter-webpage
二、项目流程
一个用户多个角色
一个部门,多个角色(包含当前部门和当前部门子部门的所有权限)
一个用户一个部门,一个角色(用户拥有所有角色的并集权限)
一个角色多个菜单和权限
三、功能点
webcenter-admin
- 权限管理
- 用户管理
- 角色管理
- 菜单管理
- 流程审核
webcenter-console
系统管理
用于给系统初始化client_id等参数,其它自系统必须通过初始化的参数进行系统的配置。
权限管理
主要是进行接口的管理,给进行权限的控制,防止没有权限的用户进行接口的攻击
用户管理
用户体系都用同一套。用户通过单点登录获取用户和权限信息等。
角色管理
给角色可以添加不同系统的不同菜单,和不同的权限
菜单管理
菜单管理实现增加系统ID参数,通过系统ID区分不同的系统有不同的菜单。
四、实现方式
- 通过导入依赖和增加数据库即可实现,简单的登陆注册、权限管理等
- 以一种插件的方式去集成
五、接口详细设计
5.1 webcenter-admin
用户的增删改查
角色的增删改查
菜单的增删改查
权限的查询(增加通过系统启动的时候初始化到数据库)
登录接口
退出接口
密码修改接口
菜单查询接口
验证码获取接口
5.2 webcenter-console
单点登录接口(登录后返回用户的权限、菜单等信息)
退出接口
系统的增删改查接口
菜单通过系统区分
用户角色的权限分配区分系统
5.3 webcenter-review
六、一些想法
在前一家公司上班的时候写了两个官网和一个教育类型的网站这种网站都需要一个后台的管理系统用来管理后台用户、权限、角色,这些功能都差不多是一样的,后台的UI框架结构也是一样的。开始的时候是用jQuery+html写了头部、菜单栏、底部这些公用的html,之后又用Vue写了头部、菜单栏、底部。基本上每个后台管理项目都需要写这些公用的模块,前前后后都写了好多次这种代码。在空闲的时候想了一下,如果后面还有这种类似的网站的话,也是避免不了会写这种重复的代码,感觉会有如下几种弊端:
- 为了简化开发直接复制之前的代码,在复制代码之后需要花大量的时间去调试程序排查是否有复制遗漏的地方。
- 每次都重写这种代码的话,工作量势必会增加,而且还是重复性的工作。
想利用了面向对象三大特征之一的封装特征,把这些公用的功能都封装在一起。以后就不用在写这种重复的代码了。这段时间公司也在使用XXL-JOB分布式调度工具,XXL-JOB就是一个服务端和多个客服端的模式,服务端负责调度其他的客户端。于是就想有一个服务端专门负责管理用户、权限、角色、菜单这些功能。然后客服端去调用服务端提供的接口就可以实现这些重复的功能了。 于是在空闲的时候就开发了一个乞丐版的Webcenter如下:
- 服务端:提供SSO单点登录功能、用户管理、角色管理、系统管理、菜单管理、权限管理等功能。
- 客户端脚手架: 用来初始化SpringBoot项目和Vue后台项目,目的就是为了不写重复的代码。
有了这个服务端之后,以后开发后台管理系统只需要启动服务端,然后利用客服端脚手架即可快速创建后台管理系统。在已经安装了redis和mysql的情况下基本上只需要10分钟就可以进行自己业务逻辑的开发了。 也不知道功能怎么样,希望大家提供宝贵的意见。 项目地址:[https://github.com/gaoqisen/gqs-webcenter](