一、系统权限定义

1、功能权限

定义:功能权限指的是用户登陆系统后,所持有的功能权限因子下的权限,而展示对应系统中各个菜单页面、操作功能等。功能权限设置分:

  • 【角色授权】
  • 【用户授权】
2、数据权限

定义:数据权限指的是用户登录系统后,所持有的数据权限因子下的权限,而展示对应的系统数据。数据权限设置分:

  • 【角色授权】
  • 【用户授权】

二、系统权限实现

根据功能权限、数据权限的定义:

  1. 对于系统中某个菜单页面,如果登陆用户持有功能权限,则允许进入浏览该菜单页面(),在该菜单页面中,用户持有某个操作功能权限,则允许用户操作当前页面该用户所持有的数据权限展示出来的数据(),从而达到控制用户对系统的读写功能。
  2. 根据角色设置好【功能权限】后,当系统中某个用户持有该角色:
  • 角色无法满足用户所需权限(角色权限范围大于或小于用户所需权限),调整用户【角色权限】范围能解决,如角色定义时范围过大或过小。
  • 角色定义合理并且满足大部分用户,个别用户权限无法满足,则针对个别用户进行【用户权限】设置,此时会产生一个冲突:如图
    DH ERP系统权限设计
    A、【角色权限】设置范围过大:用户只需求其中一部分权限时,针对用户设置的个人权限,此时用户的正确权限应该是【角色权限】与个人设置的【用户权限】的交集部分。
    B、【角色权限】不够:用户所需的部分权限在角色权限之外时,针对用户设置【用户权限】,此时用户的正确权限应该是用户设置的【用户权限】。
    而冲突点是:系统在对角色、用户设置好权限后,这两份权限如何合并成用户正确的权限。系统是无法比较角色、个人所设置的权限范围大小,一般的处理方法是要么取两个集合的交集,要么取两集合的并集,但得到的结果都不是理想的。
    解决方案:
    系统中最终只以设置的【用户权限】为准,在设置用户为某个角色时,只是将该角色所持有的权限复制到个人设置中,在此基础上,根据用户需求,对所持权限因子进行增删。因为去掉了【角色权限】的影响,最终得到的权限一定是正确的。
  1. 以设置【用户权限】为准的情况下,如果只是功能权限、单一的数据权限因子,则完美解决以上冲突。但是当数据权限因子存在多个,并且每个因子相互影响时,则会产生新的冲突。首先,因为去掉了【角色权限】的影响,所有的数据权限因子就处在同一个优先级上,如图:
    DH ERP系统权限设计
    因为各个数据权限因子同时作用于某一份数据时,取各个因子的并集会产生数据权限越界,取各个权限因子的交集,则会导致缺少数据。
    解决方案:
    无解

相关文章: