1、系统概述
1.1 技术栈说明
1.1.1 前端技术栈
1.1.2 后端技术栈
1.2 设计思路
1.3 系统特色
1.4 使用及系统展示
2、版本说明
2.1 当前版本说明
2.2 后续版本计划
系统(当前 release_simple 版本)本着易上手学习的思路,尽量避免使用过多的技术栈,以便读者减轻学习难度,让学习者更关注权限管理
本身。
系统基于通用的权限系统RBAC的思想设计。包含4个关键元素:用户-角色-权限-资源(关系见下图),系统通过以下表结构维护上述关系。
表名 | 说明 |
---|---|
t_sys_user | 用户表 |
t_sys_role_user | 角色-用户关系表,维护用户分配的角色信息 |
t_sys_role | 角色表 |
t_sys_role_resource | 角色-资源关系表,维护角色拥有的资源关系信息 |
t_sys_resource | 资源表(含权限标识) |
t_sys_user_resource | 用户-资源关系表,特殊保留的表,在某些场景可方便分配权限 |
支持iframe
配置方式: 组件地址固定值:AIframe
、菜单URL配置为可访问的URL地址
。
支持外链
配置方式:组件地址建议为:EmptyLayout
、菜单URL配置为可访问的URL地址
。
支持多角色(等同角色组)和独立权限
单一用户可拥有多个角色,同时可以为用户单独设置资源权限,满足特殊需求(如主副领导,可不新建角色,单独分配权限即可)。
极少的三方依赖
服务端使用 JdbcTemplate,手工SQL编写,更容易上手理解,适合基础学习。
使用Shrio实现权限控制、Jwt实现安全授权(后续计划:JWT不在登录场景使用)。
在demo模块引入Swagger作为API管理及Druid作为数据库监控。
前后端分离
适合前后端从业人员学习,特别是前端非常棒。
系统主要功能提供SDK,方便多个小项目直接引用,完成基础用户、资源及权限管理。
使用指南
准备事宜
启动
服务端启动 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 | 只读用户,仅读权限 |
系统展示
当前版本(分支:release_simple)提供最基础的权限控制,使用 JdbcTemplate,减少过度的技术使用,方便初学者学习。
字典表:前端组件封装结合字典 + 字典表管理 [2020-12-23完成]
// 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"/>
权限颗粒完善:列权限控制、数据(行)权限控制(可扩展)
安全:数据脱敏、加解密
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。