一个基于 Spring Boot 和 Spring Security 的前后端分离的内管基础项目

一个基于 Spring Boot 和 Spring Security 的前后端分离的内管基础项目,注重用户权限管理功能

Java Web开发框架

访问GitHub主页

共255Star

详细介绍

jiiiiiin-security

一个前后端分离的内管基础项目

原则

  • 以最少的表结构字段完成一个基础应用,以便在以此完成实际项目时有更多的扩充自由

快速开始

计划

功能 完成状态 简介
代码自动生成 100% 服务端3层代码自动生成
RBAC后端权限控制 100% 基于Spring Security的后端RBAC权限控制
RBAC前端权限控制 100% 1.基于vue-viewplus,实现了一个自定义模块
2.实现前端页面可访问性控制,通过路由拦截,判断用户待访问页面是否已经授权
3.实现可见页面的局部UI组件的可使用性或可见性控制,基于自定义v-access指令,对比声明的接口或资源别是否已经授权
集成vue-viewplus 100% vue-viewplus一个简化Vue应用开发的工具库
会话并发控制 100% 使用SpringSecurity#concurrency-control实现应用中同一用户在同时只能有一个是终端(渠道)成功登录应用,后登录终端会导致前一个会话失效
会话集群共享 100% 使用Spring Session与Redis实现会话的共享存储和集群部署
d2-mng-page 100% 自定义管理页面组件(统一管理:分页、检索、table、编辑),为了统一审美
角色管理 95% 用来管理系统定义的角色
资源管理 95% 用来管理系统定义的资源
用户管理 95% 用来管理系统存在的用户
接口管理 95% 用来管理后台对应的接口集合

功能截图

以下是部分功能截图

表结构和权限说明

表名称 简介
mng_admin 【用户表】,使用channel字段可以区分不同业务系统的用户,如这里0标识内管
mng_role 【角色表】,使用channel字段可以区分不同业务系统的角色,如这里0标识内管
mng_role_admin 【角色用户关联表】,这套系统中,角色和用户是可以多对多配置的
mng_resource 【权限资源表】,使用channel字段可以区分不同业务系统的资源,如这里0标识内管,另外type用来标识资源的类型,在这里只有类型: 1:菜单(默认) 0:按钮两种类型,并且没有直接定义一个类url字段取标识资源记录对应的后端某一个接口,是因为如一个菜单点击之后到达的页面可能要发多个后台交易,故一个字段来标识这多个交易容易导致混乱,所以在传统的RBAC表结构之下新增了mng_interface【系统接口表】来定义,而资源则是给业务人员配置角色或菜单时使用;这张表还有一个特点是将前端Vue Router的页面路径以path字段标识,以方便前后端的权限管理
mng_role_resource 【角色资源关联表】,用户、角色、资源都可以由业务人员进行关联操作
mng_interface 【系统接口表】,使用channel字段可以区分不同业务系统的接口,如这里0标识内管,使用url+method来区分后台的某一个接口
mng_resource_interface 【资源接口关联表】,mng_resourcemng_interface是多对多关系,因为某一个接口,比如查询资源树接口在角色管理列表和资源管理列表两个页面都会被调用,且存在一个资源记录会调用多个接口,故我觉得这样来设计表机构,多加这一张表,才能更清晰的将意思表达到位,且方便维护
persistent_logins spring security 记住用户所涉及表
springsocial_UserConnection spring social 第三方授权信息关联表

项目结构说明

.
├── db 存放数据库脚本
├── docs 存放一些做项目时候的笔记
├── jiiiiiin-security-app 针对JWT Token的安全模块(目前没有依赖)
├── jiiiiiin-security-browser 针对Session的安全层模块
├── jiiiiiin-security-core 安全层基础模块(处理Spring-Security相关基础配置)
├── jiiiiiin-security-authorize 后端RBAC抽象模块
├── jiiiiiin-data-orm orm层模块(目前主要针对Mybatis-Plus)
├── jiiiiiin-module-common 应用通用模块
├── jiiiiiin-module-mngauth 管理模块
├── jiiiiiin-server-manager 内管后端应用
├── jiiiiiin-client-manager 内管前端应用(Vue项目,依赖d2-admin模块(1.6.9最新))
├── pom.xml 公共pom

所用技术栈

后台

前端