# hoo-platform-parent
**Repository Path**: bytechar/hoo-platform-parent
## Basic Information
- **Project Name**: hoo-platform-parent
- **Description**: 基于SpringBoot、Shiro、JWT以及Ant Design Vue的前后端分离的权限管理系统。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://laohuangshu.gitee.io/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 12
- **Created**: 2022-09-18
- **Last Updated**: 2022-09-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Hoo 权管系统说明
```text
1、系统概述
1.1 技术栈说明
1.1.1 前端技术栈
1.1.2 后端技术栈
1.2 设计思路
1.3 系统特色
1.4 使用及系统展示
2、版本说明
2.1 当前版本说明
2.2 后续版本计划
```
## 一、系统概述
### 1.1 技术栈说明
系统(当前 release_simple 版本)本着易上手学习的思路,尽量避免使用过多的技术栈,以便读者减轻学习难度,让学习者更关注`权限管理`本身。
#### 1.1.1 前端技术栈
* Vue 2.0
* Ant Design Vue
* 基于 [vue-antd-pro](https://gitee.com/sendya/ant-design-pro-vue) 开发,删减和完善了一些功能
#### 1.1.2 后端技术栈
* SpringBoot 2.3.1.RELEASE
* Shiro 1.4.0
* Jwt 3.4.1
* 额外增加了 Druid 1.1.0、Swagger 3.0.0 用于监控和API管理
### 1.2 设计思路
系统基于通用的权限系统RBAC的思想设计。包含4个关键元素:用户-角色-权限-资源(关系见下图),系统通过以下表结构维护上述关系。

| 表名 | 说明 |
| ------------------- | ---------------------------- |
| t_sys_user | 用户表 |
| t_sys_role_user | 角色-用户关系表,维护用户分配的角色信息 |
| t_sys_role | 角色表 |
| t_sys_role_resource | 角色-资源关系表,维护角色拥有的资源关系信息 |
| t_sys_resource | 资源表(含权限标识) |
| t_sys_user_resource | 用户-资源关系表,特殊保留的表,在某些场景可方便分配权限 |
### 1.3 系统特色
* 支持iframe
配置方式: `组件地址固定值:AIframe`、`菜单URL配置为可访问的URL地址`。
* 支持外链
配置方式:`组件地址建议为:EmptyLayout`、`菜单URL配置为可访问的URL地址`。
* 支持多角色(等同角色组)和独立权限
单一用户可拥有多个角色,同时可以为用户单独设置资源权限,满足特殊需求(如主副领导,可不新建角色,单独分配权限即可)。
* 极少的三方依赖
服务端使用 JdbcTemplate,手工SQL编写,更容易上手理解,适合基础学习。
使用Shrio实现权限控制、Jwt实现安全授权(后续计划:JWT不在登录场景使用)。
在demo模块引入Swagger作为API管理及Druid作为数据库监控。
* 前后端分离
适合前后端从业人员学习,特别是前端非常棒。
系统主要功能提供SDK,方便多个小项目直接引用,完成基础用户、资源及权限管理。
### 1.4 使用及系统展示
* 使用指南
* 准备事宜
* 新建数据库、导入SQL文件(/hoo-platform-parent/hoo-permission-jwt-parent/hoo-permission-sdk/src/main/resources/sql/release_simple.mysql.sql)。
* 修改application配置中数据库连接信息(/hoo-platform-parent/hoo-example-parent/hoo-permission-jwt-sdk-demo/src/main/resources/application-dev.yml)
* 启动
* 服务端启动 HooPermissionJwtSdkApplication.java 文件。
* 前端(/hoo-platform-parent/hoo-permission-jwt-parent/hoo-permission-jwt-ui)启动步骤,如下:
```text
1、安装依赖: npm install
2、启动: npm run serve
3、打开:http://localhost:8000
```
* 登录
| 用户名 | 密码 | 角色权限 |
| -------- | ------ | -------------- |
| han.q | 123456 | 超级管理员,读写权限等 |
| han.qing | 123456 | 管理员,读权限,部分的写权限 |
| hanqing2 | 123456 | 只读用户,仅读权限 |
* 系统展示











## 二、版本说明
### 2.1 当前版本说明
当前版本(分支:release_simple)提供最基础的权限控制,使用 JdbcTemplate,减少过度的技术使用,方便初学者学习。
### 2.2 后续版本计划
* 字典表:前端组件封装结合字典 + 字典表管理 [2020-12-23完成]
* 前端UI:新增数据类型、数据子项管理;
* 服务端功能:数据类型、数据子项功能完成(细节暂时不优化);
* Select 和 Radio 封装让使用更加简洁(后续根据需求会继续扩展);
```javascript
// 1、字典注入方式:前端内存注入(见main.js);服务端配置请求后注入(见permission.js)
dic.put('sys_use_flag', [{ label: '可用', value: '1' }, { label: '不可用', value: '0' }], '可用标记')
dic.putAll([{type: 'sys_use_flag', label: '可用', value: '1'}])
// 2、Select & Radio 支持 data、dType 和 remote 扩展属性,使用更加方便
```
* 权限颗粒完善:列权限控制、数据(行)权限控制(可扩展)
* 安全:数据脱敏、加解密
## 三、发布版本
* [release_simple](https://gitee.com/laohuangshu/hoo-platform-parent/tree/release_simple) 提供基础的权限支持,技术栈较少,适合入门学习。
* [release_level1](https://gitee.com/laohuangshu/hoo-platform-parent/tree/release_level1) 喜欢前端的朋友可以学习,封装简化思路,可以节省很多工作量。