Springmvc+Shiro+zTree 实战(一):数据库表格设计
shiro实现粗细粒度权限控制一:表格设计
一:表格设计(一个用户对应一个系统角色,一个系统角色具有多个操作权限)
分析本系统中 用户、角色、权限之间关系:
一个用户对应一个角色(一对一关系) tip:也可以设计成一对多
一个角色可以有多个权限,一个权限也可以被多个用户拥有(多对多)
一对一关系使用外键关联
多对多关系使用中间表关联
用户表:user
列描述 | 列名 | 类型 | 是否主键 | 备注 |
主键 | id | int | 是 | 自增主键 |
用户名 | user_name | varchar | 否 | 用户名称 |
昵称 | nick_name | varchar | 否 | 用户昵称 |
密码 | password | varchar | 否 | 用户密码 |
角色ID | role_id | int | 否 | 外键:用户绑定的角色ID |
角色表:role
列描述 | 列名 | 类型 | 是否主键 | 备注 |
主键 | id | int | 是 | 自增主键 |
角色名 | role_name | varchar | 否 | 角色名称 |
角色描述 | role_desc | varchar | 否 | 角色描述 |
角色权限表:role_permission
列描述 | 列名 | 类型 | 是否主键 | 备注 |
角色ID | role_id | int | 否 | 外键:角色ID |
权限ID | perm_id | int | 否 | 外键:权限ID |
权限表:permission
列描述 | 列名 | 类型 | 是否主键 | 备注 |
主键 | id | int | 是 | 主键 |
权限标识 | perm_token | varchar | 否 | shiro通过保存该属性集合做权限控制 |
权限名称 | perm_desc | varchar | 否 | 权限名称用于zTree显示 |
父级权限ID | parent_id | int | 否 | 父权限ID |
几级权限 | level | int | 否 | 通过level来实现zTree的自定义图片功能 |
因为权限表格相比较有点难理解,下面列出一些数据案例,并简单描述一下:
表格数据案例:
level属性介绍:
0 :顶部父节点
1:左侧菜单栏的父节点
2:左侧出菜单栏的子节点
3:用于细粒度权限控制
左侧菜单栏展示:
zTree展示:
下一节:实现系统角色管理模块