角色:R1,R2,R3
用户:U,U2,U3
把权限分配给角色
P1,P2 > R1
P2,P3 > R2
把角色分配给用户
R1, R2 > U1
取并集计算出U1的权限=P1,P2,P3
如果是在毕业设计中,这样就很完美了。开源社区的许多WEB框架也基本上这样设计。
如果你的系统比较简单或没几个用户这样设计没什么问题。但是在一个复杂的组织架构中,就不能当成一个毕业设计来作了。
理论上有些环节可以忽略,忽略了也可以通过其他方式代替,如忽略用户组换成角色可以实现同样的效果。
但在实际操作中却行不通,要不然为什么要有用户组的概念呢?
以下比较零散,把问题都罗列完了再整理成篇。
几个疑问
-
用户组:
把一组用户划成一个组,方便授权。
如:到了年底需要审核的几天时间内,审核组用户有3个人,这3个人,需要5个角色的权限,才能完成审计工作。
理想的操作是创建一个用户组:审计组,给审核组授予5个角色,到需要审计的时候,把参与审计的3个人划到审计组中。
相想如果没有用户组怎么操作呢?
首先需要管理员记住,审核需要有哪些角色的权限,到审计的时候分别给这5个人授予5角角色.这种事可能一年就一次,记是记不住的,规则又非常严谨,权限是一项不能多一项不能少。
如果是20个人,20个角色呢。每2个人审计不同的数据呢。
或者定义一个审计角色?把审计需要的权限授予审计角色?
这也不可取,因为每个角色对应的权限是会变的
用户操作时不能按程序员的思路操作,应该按业务逻辑,比如需要审核成本的人,划成成本审核组。需要审计物流的人,划成物流审计组。
-
用户权限
对角色权限的补充或覆盖
如:跟单角色,会有30个权限,但有其中几个跟单员比较特殊临时需要看更多的数据,所以需要在给他授予跟单角色后,再在这个基础上添加几个权限。
如果没有用户权限呢?
为这几个人单独定义一个高级跟单角色?
这样不可取,因为跟单角色的权限也会变,这样需要记住修改高级跟单的权限,而且这个更多数据的权限不固定是什么权限,不能一会创建完一个高级跟单1,一会再创建一个高级跟单2,一会用完了又删除。
- 权限<>角色 双向操作
- 部门授权
-
数据权限与子权限