1 Star 4 Fork 1

林中白狼 / springboot-ucan-admin

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

SpringBoot-Ucan-Admin

介绍

该项目是基于RBAC3的权限管理系统,是ucan-admin的springboot版本。

使用的技术栈:SpringBoot2.7.9 + Shiro1.11.0 + Mysql5.7 + LayUi(及LayUi第三方插件)+ FreeMarker。

功能简介

1.用户登录、认证授权、Session管理、账号登录限制(一个账号只能在一处登录)、登录失败次数限制。
2.组织结构管理、职位管理、用户管理、组织分配。
3.角色管理:
3.1 角色基本信息管理。
3.2 角色分层、角色互斥、角色权限继承、角色分配、权限分配、角色用户数限制(待办)等。
4.权限管理。

用户名:admin 密码:123456
用户名:小王 密码:123456

Gitee:ucan-admin
Github:ucan-admin

数据库表关系图

1.数据库表关系图:
Image text

表名称说明:

users: 用户表
organization: 组织表(有上下级关系)
post: 职位表(有上下级关系)
roles: 角色表(有上下级关系)
permissions: 权限表(有上下级关系)
user_organization: <用户-组织>关系表
user_post: <用户-职位>关系表
role_organization: <角色-组织>关系表
role_post: <角色-职位>关系表
role_permission: <角色-权限>关系表
mutex_roles: 互斥角色表

**注:**所有数据表仅在代码逻辑上做了外键约束,数据表结构未添加外键约束,可自行在数据表添加外键约束(如需要)。

其他后续可能会用到的表:
group: 其他用户分组(非组织结构内人员或其他特殊情况)
user_group: <用户-其他分组>关系表
role_group: <角色-其他分组>关系表
system: 系统编码表 (用于区分不同系统的权限信息)
cross_role: 跨角色
cross_permission: 跨权限

运行环境

  1. JDK 1.8+
  2. SpringBoot2.7.9
  3. Mybatis-3.5.9
  4. Shiro1.11.0
  5. Mysql 5.7.33
  6. Layui 2.7.6
  7. Tomcat 9
  8. Freemarker

项目安装、运行步骤

  1. 在本地准备好Java 8运行环境。
  2. 在本地Mysql中新建ucan_admin数据库,运行项目中的ucan_admin.sql文件。
  3. 修改application-xxx.yml文件中的用户名、密码为你本地数据库的。
  4. 执行UcanAdminApplication.java的main方法。

功能描述

组织架构、职位、用户、角色、权限管理功能概述

a. 组织节点之间有上下级关系,如总公司、分公司、总公司部门、分公司部门等(也可以是你认为合理的任何组织架构);
b. 你可以添加任何节点的同级节点与子节点(右击弹窗操作),其中“超级管理员节点”不可删除,主要为了维护超级管理员与组织结构之间的关系。
c. 任何组织架构节点可直接新增职位,职位也可以有上下级关系。
d. 新增用户时,必须先选择职位,否则不允许操作(后续如果新增了其他类型的分组再进行逻辑修改)。
e. 角色、权限各自的CURD操作。
f. <用户-组织>、<用户-职位>、<用户-角色>、<用户-权限>关系处理逻辑:
图片
g. 最后通过shiro标签或注解进行资源访问权限控制。

1. 登录模块

1.1 通过输入正确的用户名、密码进行系统登录。
1.2 每个账号同一时刻只能在一处成功登录,登录成功后会把之前登录的同一个账号踢出系统。
1.3 账号登录失败次数限制:
  用户连续登录失败次数小于5期间,如果有一次登录成功,那么该用户登录失败次数、限制登录时长将清零;
  用户连续5次登录失败时,提示"15分钟后再进行登录操作",并开始记录限制登录时长15分钟;
  用户连续10次登录失败时,提示"45分钟后再进行登录操作",此时限制登录时长更新为45分钟;
  用户连续15次登录失败时,提示"操作太频繁,请联系管理员重置密码",限制登录时长为45分钟;
  在限制登录时段内,即使用户输入了正确的用户名、密码,依旧限制用户登录操作;过了限制登录时段,用户登录失败次数、限制登录时长自动清零,用户可以再次进行登录操作。
  “记住我”功能:系统Cookie有效期默认为3天,可自行到配置文件里修改。此功能可有可无。
  登录成功,系统自动完成用户授权,进行资源访问控制。

2. 仪表盘

  board.jsp 加入echarts图表及layui表格的静态页面,未做更进一步的功能开发。

3. 用户管理

3.1 包含组织架构、职位、用户的CURD、分配组织、重置密码等功能,实现对相关信息有组织的管理。
  a.删除组织节点的时候,与其关联的节点的资源必须先得到释放。
例如,公司节点有部门节点(关联着职位),则要先删除部门节点(删除职位),部门节点关联着职位,则必须先删除职位;如果职位还分配着用户,则要先删除用户。删除组织结构节点、职位节点时,相应的<组织-角色>、<职位-角色>、<角色-权限>的映射关系会自动解除。
  b. 用户信息管理:包含新增用户、查看及修改用户基本信息,为用户分配组织(主要是为了通过组织批量分配角色,达到批量分配权限的目的)。
  c. 新增组织、职位、用户的时候,系统自动为其分配基础角色,从而达到分配基础权限的目的。
  d. 用户状态为“禁用”时,用户不可登录系统。
  e. 个人基本信息设置与密码修改。

4. 角色管理
该模块包含角色基本信息的CURD、角色成员列表、角色权限分配、角色组织(职位)分配、角色互斥管理。
  a. 角色有上下级关系,上级角色继承其子孙角色的所有权限,子孙角色不可越权。例如,为会计助理分配权限的时候,只能选择会计已有的权限(通过后台数据及前端代码控制复选框是否可选)。
  b. 将角色分配给组织、职位,从而间接达到为用户分配权限的目的。
  c. 互斥角色管理:例如,会计和财务审核员不能同时分配给给某一个员工,这也意味着将角色分配给组织和职位的时候,系统会自动检查已勾选的组织、职位已分配的角色与待分配的角色之间是否存在互斥关系,如果存在,则不允许此次角色分配,需要按提示进行相应角色关系处理。

5. 权限管理
权限基本信息的CURD,删除权限时会自动解除<角色-权限>映射关系。


业务逻辑参考:

https://www.cnblogs.com/iceblow/p/11121362.html
https://juejin.cn/post/7121977695197970463

待办事项

1.角色用户数限制。
2.权限数据动态更新。
3.shiro + jwt 无状态登录认证?
4.用户管理模块 新增 组织/角色“分配角色”的功能。
5.角色管理模块 删除 “角色分配至‘组织/职位’”的功能。
6.后台数据校验?日志管理?

RBAC权限管理系统的具体业务跟具体需求有关,欢迎大家的指正与交流。

效果图

Image text
Image text
Image text
Image text
Image text
Image text

MIT License Copyright (c) 2023 林中白狼 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于RBAC3的权限管理系统,Springboot版本。 该系统使用Shiro作为用户认证与授权管理框架,实现了基于RBAC权限管理功能。 技术栈:Springboot2.7.9+ Shiro + Mysql + LayUI + Freemarker。 欢迎交流学习! 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/mrcen/springboot-ucan-admin.git
git@gitee.com:mrcen/springboot-ucan-admin.git
mrcen
springboot-ucan-admin
springboot-ucan-admin
master

搜索帮助