基于RBAC权限模型的设计与思考
需求:
1)不同的用户有不同的操作权限
2)每个部门都有相应的权限,上级自动拥有下级权限
3)企业的审核,应由企业所属地政府以及上级人员审核,比如芙蓉区的企业可以有芙蓉区政府工作人员以及长沙市工作人员审核,而其他地方人员不能审核
4)有部分模块是公用的,即无需授权 5)增删改查也需授权 数据表设计: 模块表:module
字段 ModuleId ModuleName ModuleCode ModulePcode ModuleUrl ModuleType 类型 int Varchar(20) Varchar(10) Varchar(10) Varchar(50) char(1) 说明 主键,自动生成 模块名字 模块代号(必须唯一),作为授权凭据 模块父代号,0表示根目录 模块路径 1表示公共模块,2表示可以授权的模块,3表示系统模块不授权,由超级管理员直接操作(用户表字段adminFlag=1)
动作表:effect(用来控制每个页面crud按钮)
字段 EffectCode EffectName 类型 Int Varchar(10) 说明 主键,自动生成 如增加 动作表用于直接插入插入数据库,1-增加,2-删除,3-修改,4-查询,
5-导入,6-导出,7-审核,给每个页面授予动作时,基于二进制, 如某人,A页面有查询增加1,修改2,查询4动作,相当于
2x1+2x2+4x2=14,判断有权限14$2,删除权限14$~2,增加权限14|2>>5
模块动作表:module_effect
字段 modeffId ModuleCode EffectCode EffectName 类型 int Varchar(10) Int Varchar(10) 说明 主键,自动生成 模块代号 动作id 动作id对应的名字,可以不设该字段,考虑到方便建议有
角色表:role
字段 role Id roleName CreateTime 类型 Int Varchar(20) Date 说明 主键 角色名字 创建时间
部门表:department
字段 dept Id DeptName Deptdesc DeptPid regionId· 类型 int Varchar(20) Varchar(100) int int 说明 主键 部门名字 部门简要描述 父级部门id 所属区域id 部门是根据区域来维护的