WINFORM 框架通用模块【权限管理】之核心概念
1、功能及功能权限
一般地,用户拥有一项功能,则应体现在主窗口的功能菜单树上,功能还应包括业务 View 内部的功能按钮。框架会根据权限设定情况使各功能按钮可用。为了构建导航树,某些功能还有可能是用来定义导航关系的,而不包含具体的功能含义,举例说明:
1)用来定义导航关系的功能:如图所示,【功能】、【系统管理】这两个节点是用来构建树型结构里的导航关系的,点击它们只会展开树节点,不会打开任何功能。
2)业务 View 内部的功能按钮:【功能定义】节点是一个 View,【AddChild】节点是这个 View 里的“添加”按钮对应的执行动作,如果在授权时,没有分配 AddChild,用户就不能点击该按钮。
2、角色
角色是功能的集合,不和具体的部门绑定,当用户拥有某些角色时就拥有了该角色对应的功能权限,角色只对应功能权限而不对应数据权限:
1)分配权限:如果一个功能可用,则必须确保其父节点也可用,否则该功能不会出现在左侧的功能树中。
2)禁用功能:禁用优先于可用,如果某个功能被禁用,则用户不能使用该功能。
3、数据权限
用户在使用系统时,除了功能权限外,还需要有数据权限。功能权限是定义在角色上的,而数据权限则直接定义在用户上。用户有权访问哪些数据,对于一个多部门的应用系统,数据权限非常重要,举例说明:北京分公司和天津分公司的用户,他们看到的数据应该是不同的,这可以通过数据权限来指定。
数据权限一般分为规则权限和部门权限,规则权限是一种更灵活的数据权限(不利于标准化),而部门权限,则是通过该用户所属或所管辖的部门进行数据过滤。因此,这里只谈部门权限。
对于部门权限,一种是用户能访问本用户所属部门和所有下属部门的数据。也可以为用户分派管辖部门。在施加部门权限时,如果用户没有分派管辖部门,则采用所属部门,如果分派了管辖部门,则采用已分配的管辖部门,多个管辖部门取并集。
要使部门权限生效,可实现一个通用API函数,由程序员在代码中调用相关API函数,以获得相应的过滤条件,并将过滤条件加入到查询数据的SQL语句中。