有时候把这个权限彻底吃透,也是蛮头疼的事情。
【第一部分】
用户 - 角色 之间的关系比较好梳理, 一个用户可以在多个角色里,一个角色里可以有多个用户,是(多对多的关系)
需要
有用户表 Base_User
有角色表 Base_Role
有用户-角色关联关系表 Base_UserRole
【第二部分】
用户 - 操作权限之间的关系就是, 这个用户到底有哪些操作权限?
角色 - 操作权限之间的关系就是, 这个角色到底有那些操作权限?
操作权限就不只是添加、删除、修改权限,那其实是一个技术思维上的权限而已,真正的业务权限就是:“谁有人事管理权限,谁有项目管理权限,谁有管理客户的权限”,是一个很笼统的业务上的权限,而不是所谓的 谁有添加、删除、修改的权限这么细腻,很多时候一个软件就4个人,4个人是个岗位,只需要有4种权限就可以了,“谁负责仓库?谁负责财务?谁负责业务?谁是老板”也就这么一回事情,不用搞得那么复杂。
虽然从规范的角度来讲,权限都应该先设置给角色,但是国内应用,大多是直接赋予某个操作员哪些权限,而且那么多的角色名称也难想出来,比较难定义好分工的岗位,明确的角色划分等,而且很小的应用程序就看如何见效最快,其他都等以后再优化配置管理了。
【第三部分】
用户 - 模块菜单之间的关系就是,哪个用户能访问那些模块? 这里延伸出了有一个系统默认的“模块访问权限”,谁对哪些模块有相应的模块访问权限,是一个数据集范围权限的概念,当然 角色 - 模块菜单关系表的逻辑也是一样的。
操作权限定义表 Base_PermissionItem 其中需要有一个系统默认的“模块访问权限”
系统里有哪些菜单模块 Base_Module,其实是一种资源,一种树形资源,对哪些资源有什么权限。
什么对象对什么有什么权限?的思维存储了数据范围权限 Base_ResourcePermissionScope
当然还会涉及到 用户表 Base_User, 角色表Base_Role。
先要开启主程序中的,是否采用配置菜单权限的开关,因为很简单的管理系统,并不需要设置菜单权限就可以了。
【第四部分】
还有一种逻辑是,哪个菜单,可以由哪些用户、哪些角色访问,这其实是第三部分的另外一种展示方式,数据的关联关系与逻辑关系,其实是跟第三部分是完全一样的。
【第五部分】
操作权限 - 模块菜单,用户角色-操作权限 之间的关联关系,例如用户有某些操作权限,那是不是还可以理解,若管理系统中有某个操作权限后是否默认可以访问某些菜单?完全是可以的,所以这时候有 操作权限-模块菜单之间的关联关系,就是由于有了某个操作权限,导致可以访问哪些模块菜单。这个默认关系系统里设置好后,只要用户或者角色有相应的操作权限,那就可以有与之对应的模块菜单的访问权限了。
About
吉日嘎拉(蒙古语为吉祥如意),2000年毕业于黑龙江大学计算机系软件专业,目前定居杭州,典型的IT软件土鳖一个,外号“软件包工头”。
通用权限管理系统组件(GPM - General Permissions Manager)自2003年开始发布,目前是国内注册用户和免费盗版用户最多的权限管理系统,是各种信息管理系统开发中彻底的权限解决方案。本组件支持多种主流数据库(Oracle、sqlsever、db2、mysql),功能强大,使用方便,代码简洁,思路严谨,被广大支持者称为权限管理系统中的“走火入魔级权限管理系统”。
精心维护通用权限管理系统组件(GPM - General Permissions Manager)有8年多,3年的不断推广,20万行经典的业务逻辑积累,经过上万次的调试修正,经历了四百个付费客户,上百软件公司的实战开发。
11年以上开发经验,外企工作5年,上市公司3年,独立经营软件公司2年,主持研发部门管理工作4年以上。
将权限管理、工作流做到我能力的极致,一个人只能做好那么很少的几件事情。
QQ:252056973,Mail:jirigala_bao@hotmail.com