你好,欢迎来到 【程序职场】 ,这里有你需要的技术提升,职场规划,个人成长,副业发展 等文章。
和更多小伙伴 一起学习,一起进步。
上篇我们通过vue实现了后端系统的导航栏,Spring Boot + Vue前后端分离(七)后端系统,功能导航页,通过导航栏可以看到后期我们要做的功能,后面我们会按照这些功能一步一步的完善该系统,到这里我们界面性的操作算是结束了,后面我们开始后台权限和业务逻辑的开发;本篇文章我们来说一下 权限数据库设计。
本文是Spring Boot + Vue前后端分离 系列的第八篇,了解前面的文章有助于更好的理解本文:
1.Spring Boot + Vue前后端分离(一)前端Vue环境搭建
2.Spring Boot + Vue前后端分离(二)前端Vue启动流程
3.Spring Boot + Vue前后端分离(三)实现登录功能
4.Spring Boot + Vue前后端分离(四)前端路由
5.Spring Boot + Vue前后端分离(五)登录拦截器
6.Spring Boot + Vue前后端分离(六)使用Element渲染登录界面
7.Spring Boot + Vue前后端分离(七)后端系统,功能导航页
目录
(一).后台功能思维导图
(二).权限管理模块设计
(三).权限数据库设计
(四).UI设计
(五).技术分析
前言
今年的年假时间过得越来越多,到目前为止还不知道具体什么时候才能复工,每天都关注一下疫情控制情况,另外在家里办公效率也不高,一篇文章平时几个小时搞完了,现在断断续续需要一天。
今天特别兴奋,因为 书圈管理系统项目迎来了新阶段的更新!其实如果不是yq也早做好数据库权限这块了,我想最大的原因是内心比较乱。。。
希望尽快结束这种 不能出门的状态。。。。。。
这一段文章的阅读量涨了不少,主要还是我的两个开源项目引来的,一个是一点知识学院,一个就是这个 书圈开源项目,开源毕竟学起来比较方便,并且有想学习它的冲动,对我来说,也算是对大家有点帮助了???
(一).后台功能思维导图
上一篇我们通过功能菜单栏也看到了我们需要开发的系统的基本功能,为什么说是基本功能呢?因为我计划是做到一个通用的系统,目前这些只是最基础的功能,后期要做成的功能是可以配置的,用于更多场景下,并且会一直更新,一直完善(在这里立一个flag,要为这个flag 努力 )。
1.工作台
-
通知公告: 展示系统的消息通知。
2.系统管理
-
用户管理:用户基本信息管理
-
角色管理:用户角色信息管理
-
菜单管理:菜单信息管理
-
字典管理:通用配置信息管理
3.平台管理
-
书单管理:分享书籍资料信息管理
-
书圈管理:分享书籍对应书圈信息管理
4.事务管理
-
审核书单:书单创建审核信息管理
-
审核书圈:书圈创建审核信息管理
5.系统监控
-
接口文档:接口信息管理
-
日志管理:通用日志,接口日志,错误日志
6.资源管理
-
视频课程:视频课程信息管理
-
文章资料:文章资料信息管理
(二).权限管理模块设计
一、模块设计
用户角色权限管理是各类后台管理系统的重要组成部分,由于涉及多种概念与技术,实现起来稍微有一些难度,所以这块的内容会详细的讲解一下。搞定了这个部分,基本上就可以独立完成各种功能开发了,再往后就是业务逻辑和通用组件,缓存,并发集群分布式这些了,哈哈哈 翻过了这座大山,后面也没有几十座了。。。。。
中国加油,武汉加油。
下图展示了该模块的基本功能:
用户角色权限管理
用户管理
用户信息
用户操作
角色分配
组织结构分配
增加
删除
用户黑名单
用户白名单
角色管理
角色信息
角色操作
新建角色
删除角色
权限分配
权限管理
权限粒度
菜单权限
操作功能权限
数据权限
权限操作
编辑
删除
(三).权限数据库设计
权限数据库主要包含了五张表,分别是资源表、角色表、用户表、资源角色表、用户角色表,数据库关系模型目前就先不做展示了,后期开发完成后会单独说明。
用户表:
角色表:
菜单表:
关于这些表,主要关注如下几点:
1.sys_user表是用户表,存放了用户的基本信息(名称,手机号,地址,密码,头像 等等)。
2.sys_role是角色表,字段信息按照 SpringSecurity的规范添加。
3.sys_menu表是一个资源表,该表涉及到的字段有点多,由于前端采用了Vue来做,因此当用户登录成功之后,系统将根据用户的角色动态加载需要的模块,所有模块的信息将保存在menu表中,menu表中的字段都是Vue-Router中需要的字段,也就是说menu中的数据到时候会以json的形式返回给前端,再由vue动态更新router,menu中还有一个字段url,表示一个url pattern,即路径匹配规则,假设有一个路径匹配规则为/admin/**
,那么当用户在客户端发起一个/admin/user
的请求,将被/admin/**
拦截到,系统再去查看这个规则对应的角色是哪些,然后再去查看该用户是否具备相应的角色,进而判断该请求是否合法。
(四).ui 设计
前面我们说了 书圈系统的 功能和模块设计,那我们需要做成什么样式的效果呢?
下面我找了几个开源的项目的页面(界面效果很好,比我自己的项目界面好多了,哈哈哈 尴尬),虽然框架模式和技术不一样,但是界面可以做成这种效果的?
下面我把权限的几个界面(用户,角色,菜单)给大家展示一下:
1,用户管理
2,角色管理
3,菜单管理
(五).技术分析
下面我们分析一下技术点,从开发角度来分析考虑:
-
用户、角色、权限、等表结构设计
-
用户身份验证、授权、会话管理,用户信息的加密存储
-
不同粒度权限的具体实现
看起来只有这三个方面,其实还是挺复杂的,为了简化开发的难度和工作量 我们需要使用
Spring Security 或者 Shiro 来完成一些权限等功能的开发(具体使用哪种方式,我会在考虑一下,因为为了长远考虑,还是要找一个比较好的),所有应用场景都有一套成熟的框架。
源码链接:https://github.com/ProceduralZC/bookcircle
敬请期待下篇。。。
简介:专注于 Spring Boot ,微服务,前端APP,副业赚钱,职场规划,运营管理,个人成长 等,关注后回复 学习资料 ,领取为你精心准备的学习干货!
一个执着的职场程序员
资料: 可以在公众号后台回复 “学习资料” 获得技能提升的干货资料。