一步步教你如何用疯狂.NET架构中的通用权限系统 -- (用户 - 角色 - 操作权限 - 模块菜单)之间的关联关系
2010-08-13 17:37 通用C#系统架构 阅读(14966) 评论(10) 编辑 收藏 举报有时候把这个权限彻底吃透,也是蛮头疼的事情。
【第一部分】
用户 - 角色 之间的关系比较好梳理, 一个用户可以在多个角色里,一个角色里可以有多个用户,是(多对多的关系)
需要
有用户表 Base_User
有角色表 Base_Role
有用户-角色关联关系表 Base_UserRole
【第二部分】
用户 - 操作权限之间的关系就是, 这个用户到底有哪些操作权限?
角色 - 操作权限之间的关系就是, 这个角色到底有那些操作权限?
操作权限就不只是添加、删除、修改权限,那其实是一个技术思维上的权限而已,真正的业务权限就是:“谁有人事管理权限,谁有项目管理权限,谁有管理客户的权限”,是一个很笼统的业务上的权限,而不是所谓的 谁有添加、删除、修改的权限这么细腻,很多时候一个软件就4个人,4个人是个岗位,只需要有4种权限就可以了,“谁负责仓库?谁负责财务?谁负责业务?谁是老板”也就这么一回事情,不用搞得那么复杂。
虽然从规范的角度来讲,权限都应该先设置给角色,但是国内应用,大多是直接赋予某个操作员哪些权限,而且那么多的角色名称也难想出来,比较难定义好分工的岗位,明确的角色划分等,而且很小的应用程序就看如何见效最快,其他都等以后再优化配置管理了。
【第三部分】
用户 - 模块菜单之间的关系就是,哪个用户能访问那些模块? 这里延伸出了有一个系统默认的“模块访问权限”,谁对哪些模块有相应的模块访问权限,是一个数据集范围权限的概念,当然 角色 - 模块菜单关系表的逻辑也是一样的。
操作权限定义表 Base_PermissionItem 其中需要有一个系统默认的“模块访问权限”
系统里有哪些菜单模块 Base_Module,其实是一种资源,一种树形资源,对哪些资源有什么权限。
什么对象对什么有什么权限?的思维存储了数据范围权限 Base_ResourcePermissionScope
当然还会涉及到 用户表 Base_User, 角色表Base_Role。
先要开启主程序中的,是否采用配置菜单权限的开关,因为很简单的管理系统,并不需要设置菜单权限就可以了。
【第四部分】
还有一种逻辑是,哪个菜单,可以由哪些用户、哪些角色访问,这其实是第三部分的另外一种展示方式,数据的关联关系与逻辑关系,其实是跟第三部分是完全一样的。
【第五部分】
操作权限 - 模块菜单,用户角色-操作权限 之间的关联关系,例如用户有某些操作权限,那是不是还可以理解,若管理系统中有某个操作权限后是否默认可以访问某些菜单?完全是可以的,所以这时候有 操作权限-模块菜单之间的关联关系,就是由于有了某个操作权限,导致可以访问哪些模块菜单。这个默认关系系统里设置好后,只要用户或者角色有相应的操作权限,那就可以有与之对应的模块菜单的访问权限了。
导读:
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 在页面中的调用权限讲解
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 数据集权限的调用权限讲解
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 分级管理
疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 --- 操作权限
疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 --- 角色权限
疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 --- 数据集权限
/Files/jirigala/DotNet.CommonV3.0.rar
/Files/jirigala/handbookV3.0.pdf