目前权限管理系统很多,但通用、灵活、符合现代企事业单位实际工做须要的很少。现有的权限系统绝大多数都是以模块为核心,而本权限模型将摒弃此类广泛的作法,将以组织机构为核心来进行权限系统的设计,由于这更符合实际的业务需求,也具备不少没法比拟的优势。首先来看以组织机构为核心的权限模型的逻辑结构图:html
经过上图你可轻松的设计出相应的数据库结构,而此权限模型体系所具备的优势以下:数据库
一、以组织机构为核心进行权限的管理和分配等,更加符合现代企事业的实际须要,包括多机构、组织、部门、岗位、人员等。api
二、实现一人对应多个组织实体、岗位的同时,还能对账号进行统一的登陆、验证和受权。缓存
三、支持功能权限、动做权限、数据权限、管理权限等。服务器
四、权限继承,某个组织的全部下属组织均能继承本组织的权限。数据结构
五、实现分级受权,某个组织可对下属组织实现权限范围内的分级权限管理,对于组织机构层次不少的企业或政府机构来讲特别适用,这可经过上图中的权限继承来实现。mvc
六、一般状况下经过角色对组织进行权限分配,在这里,组织自己其实也同时充当了“用户组”的职责,并且在操做上还更加方便;固然,还可直接对某个特定组织绕开角色单独进行权限的分配,例如可对某个组织追加或禁用具备的角色权限范围以外的一些特定权限。数据库设计
七、实现组织回收站功能,必要时可进行物理删除和恢复,作到系统中有后悔药可用。性能
八、美观的界面,出色的性能与多系统、多数据库的支持。 大数据
上述的权限模型体系,还应有以下考量:
一、组织机构按特定的规则建立,例如组织下可包含组织、机构、 部门、岗位、人员,但部门下只能包含子部门、岗位和人员,而岗位下只能是人员等等;同时需对数据库表进行优化并适当冗余,保证每一个组织可快速查询所包含的下属组织及类型。
二、经过人员成员和用户相关联,人员成员可分配至组织下的任意节点,这在实现了一人多岗的同时,也实现了统一的用户基本资料管理和权限分配。每一个用户有且只能有一个主要岗位,其余岗位均为从属岗位,对人员成员的信息管理将自动更新到人员成员管理的用户上。
三、在组织下进行角色的关联, 经过路径就可快速查询到某个组织所属的角色及继承的角色,管理权限和数据权限的实现思想和此相似。
四、经过人员成员和权限的管理,可在角色范围外对用户的权限进行分配和管理,这有助于大大增长系统在权限控制上的灵活性,也有助于实现真正意义上的分级受权。
五、管理权限,本质上是一种数据权限,指的是某个组织下的人员成员能够管理的组织的业务数据,管理权限的目标是实现跨部门协做,管理权限可脱离本组织所对应的组织机构树节点。经过在业务系统中增长人员成员的完整路径字段,这样每一个用户登陆后均能经过自身管理的组织完整路径查询到所管理的下属组织的业务数据。同时完整路径字段应由一系列惟一的ID值组合而成,须要保证这个完整路径的惟一性并尽可能作到不变性;同时提供相应的事件机制,保证即便完整路径有修改时,也能通知业务系统进行相应的处理,有效保证业务数据和权限模型数据之间的一致性。
六、至于数据权限,可经过指定自定义的查询过滤条件等,为每一个角色和人员指定特殊的数据权限;动做权限和数据权限只能对应到具体的功能权限而不能独立存在。
七、本权限模型实现了多个业务系统共用一个数据库数据,并保证管理上互不交叉;同时可配置表的个性化名称;支持扩展字段等个性化功能,为二次开发用户提供必要的灵活性和个性化支持接口。
八、在性能上,首先须要考虑的是数据库设计的适当冗余,例如对组织机构增长了路径字段,这个字段的值须要根据组织所在的上下级关系生成,业务系统中可经过存储该字段的值实现高性能的数据权限和管理权限功能;其次在界面上对树形结构、网格数据等尽可能使用服务器端的延迟查询和分页处理,在大数据量下可大大提升系统的响应速度;最后还要对不常常变化的数据进行适当的缓存处理。
九、本权限模型的实现难点主要在业务规则的标准化和冗余字段数据进行一致性的维护上。例如前面提到的路径数据,以及状态字段等(如当禁用了某个组织后,毫无疑问也须要禁用全部下属的组织)。对于多数据库支持,还需考虑不一样数据库之间SQL语法和特性上的差别。
十、本权限模型应能提供必要的权限控制表达式解析组件,这有助于提供终端用户使用本系统时的灵活性和易用性。例如可在界面配置只能查询自身数据、或父组织数据、或指定完整路径的业务数据过滤表达式等,然后台能自动把这些表达式解析成 SQL 表达式或 LINQ 表达式,对特定的业务数据进行过滤查询。
十一、本权限模型还应提供功能完备、简单易用的 API 接口和必要的界面组件,例如可显示指定ID的全部下属组织机构树等界面组件,这样只需简单配置下ID就能显示全部下属组织,开发人员无需关心底层的数据结构,可大大提升业务系统的开发速度。
近期将提供本权限模型的预览版 Demo。
附 - 权限模型+流程专家:http://pjdemo.yellbuy.com/
附 - 代码工厂 MVC 插件 Demo 地址:http://mvcdemo.yellbuy.com/
附 - 代码工厂 WPF 插件 介绍:http://www.cnblogs.com/gyche/archive/2012/06/02/2531121.html
附件下载一 - 代码工厂:YbSoftwareFactory V2 下载,运行环境-.NET 4.0。
附件下载二 - 代码工厂 WinForm 插件 Demo:YbRapidSolution for WinForm Demo下载:运行环境-.NET 4.0。服务层部署在 Internet 上,,可直接运行;如需在本地部署,除了安装数据库外,就是修改配置文件,这里再也不详述。