这套权限管理是配合Zend Framework设计的,用在其他地方的时候可以做些修改。
一、表构成
1.总共有七张表组成
2.管理员信息表(sys_user)、系统模块信息表(sys_module)与用户分组信息表(sys_group)这三张是独立的表,没有与其他表发生关系。
3.用户分组信息表(sys_action)保存的就是一个个的操作行为,要控制的权限就是这些操作。
4.分组与用户信息表(sys_group_user)保存是用户与分组的关系,将一个个用户分组可以方便用组来控制权限。
5.用户权限控制信息表(sys_acl_user)用于保存一个个用户单独的权限。
6.分组权限控制信息表(sys_acl_group)用于保存一个个组的权限。
二、关系说明
1)管理员(sys_user)可以是一只羊,例如下面的懒羊羊。
2)懒羊羊所在的分组(sys_group_user)就是他的家,在他家里能做的操作就是组的权限(sys_acl_group)。
3)他在家里能做很多事情(sys_acl_group),例如躺着吃蛋糕、坐着吃蛋糕、站在窗户旁边吃蛋糕等(sys_action)。
4)他能做很多事情(sys_acl_user),例如靠在树下睡觉、躺在草地上睡觉或坐在秋千上睡觉等(sys_action)。
三、数据库设计
1)管理员信息表(sys_user)
userID | INT | 管理员编号 |
userAccount | VARCHAR | 管理员登录账号 |
userPasswd | VARCHAR | 管理员登录密码 |
2)系统模块信息表(sys_module)
moduleID | INT | 模块编号 |
moduleKey | VARCHAR |
模块Key,就是ZF框架中的Controller层的名字,例如SystemController,就保存为system |
moduleName | VARCHAR | 模块中文名称 |
3)用户分组信息表(sys_group)
groupID | INT | 用户分组编号 |
groupName | VARCHAR | 用户分组名称 |
4)模块功能信息表(sys_action)
actionID | INT | 功能编号 |
moduleKey | VARCHAR | 所属模块名,对应的就是表2中的moduleKey,例如system |
actionKey | VARCHAR |
功能key,就是Controller各个文件中的Action函数,例如addAction函数,保存进来的就是open |
actionName | VARCHAR |
功能的中文名称 |
5)分组与用户信息表(sys_group_user)
id | INT | 编号 |
groupID | INT | 分组编号 |
userID | INT | 用户编号 |
6)用户权限控制信息表(sys_acl_user)
id | INT | 权限编号 |
userID | INT | 用户编号 |
actionID | INT | 功能编号 |
access | TINYINT | 使用权限, 1:允许, 0:禁止 |
7)分组权限控制信息表(sys_acl_group)
id | INT | 权限编号 |
groupID | INT | 分组编号,与表6的区别 |
actionID | INT | 功能编号 |
access | TINYINT | 使用权限, 1:允许, 0:禁止 |
四、判断权限过程
流程图中的access就是分组权限控制信息表(sys_acl_group)或用户权限控制信息表(sys_acl_user)中的字段。