Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
readme.md

Hoo 权管系统说明

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 开发,删减和完善了一些功能

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)启动步骤,如下:

        1、安装依赖: npm install
        2、启动: npm run serve
        3、打开:http://localhost:8000
    • 登录

      用户名 密码 角色权限
      han.q 123456 超级管理员,读写权限等
      han.qing 123456 管理员,读权限,部分的写权限
      hanqing2 123456 只读用户,仅读权限
  • 系统展示

    登录页

    首页

    用户界面

    角色界面

    资源-菜单

    资源-按钮

    swagger3

    druid

    iframe

    数据字典1

    数据字典2

二、版本说明

2.1 当前版本说明

当前版本(分支:release_simple)提供最基础的权限控制,使用 JdbcTemplate,减少过度的技术使用,方便初学者学习。

2.2 后续版本计划

  • 字典表:前端组件封装结合字典 + 字典表管理 [2020-12-23完成]

    • 前端UI:新增数据类型、数据子项管理;
    • 服务端功能:数据类型、数据子项功能完成(细节暂时不优化);
    • Select 和 Radio 封装让使用更加简洁(后续根据需求会继续扩展);
    // 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 扩展属性,使用更加方便
    <c-select d-type="sys_dict_type" v-model="queryParam.dictType"/>
    <c-select :data="[{type: 'sys_use_flag', label: '可用', value: '1'}]" v-model="queryParam.dictType"/>
    <c-select v-model="form.dictCode" :remote="{ url: '/dict/type/dict', r: Date.now() }" :page-num="0"/>
    
    <c-radio-group d-type="sys_dict_type" v-model="form.dictType"/>
  • 权限颗粒完善:列权限控制、数据(行)权限控制(可扩展)

  • 安全:数据脱敏、加解密

三、发布版本

  • release_simple 提供基础的权限支持,技术栈较少,适合入门学习。
  • release_level1 喜欢前端的朋友可以学习,封装简化思路,可以节省很多工作量。

Comments ( 0 )

Sign in for post a comment

About

基于SpringBoot、Shiro、JWT以及Ant Design Vue的前后端分离的权限管理系统。 spread retract
Java
MIT
Cancel

Contributors

All

Activities

load more
can not load any more