用户角色权限

我感觉,虽然很多人都可以做出一个成员资格管理的模块,但是能做的好的并不是很多。其中,有对这个成员管理原理不清楚的,也有实现能力不强的,等等。我觉得,要想做好成员资格管理,首先必须对成员资格管理的概念和原理有较为深刻的认识。然后,有个好的设计和实现。

所以,我将在下面和大家一起讨论一下成员资格管理的概念和原理。


在成员资格管理中有3个很重要的概念:用户,角色,权限。

用户是一个在业务逻辑中存在的实体或者虚实体(不可见,但存在)。用户带有某种目的和权利。

角色是具有某些共性的用户组成的集合(这个集合允许为空)。

权限是规定了的一系列的访问规则。权限的本质是规则。是规定哪些用户可以做哪些事情,哪些用户不可以做哪些事情的规则。


比如说,只有拥有经理的角色才能查看报表。我们解析的时候是这样的:有这么一批人可以查看报表,这批人有个共同的特征,那就是他们拥有经理的角色。经理的角色特征是,在现实的业务逻辑中是经理或者拥有经理一样高的权利。


在权限中定义的是用户和事情之间的关系,并没有涉及到角色。所以,如果不使用角色也可以实现成员资格管理。但是,角色作为某些用户的集合,这样对制定规格是更为方便、合理,也更符合业务逻辑的客观存在形式。

用户和角色的优先级:
在同一个功能操作的访问权限下,一个用户被拒绝/允许,但这个用户的角色却被允许/拒绝,那这个用户到底能不能执行这个功能操作?我们给出的答案的否定的。也是就如果有明确用户可以做或不能做则按照这个规定!为什么呢,因为角色只是为了更好的组织用户,它代表了一类的用户。但是这类人中必然存在差异性,直接明确用户访问规则就是为了承认或者实现这种差异性。用户具有原子性,但是角色是由用户组成的,所以它不具备原子性。只有原子性的对象才能够保证这个访问规则的正确性。

拒绝和允许的优先级:
allow 和 deny 的优先级,到底哪个高呢?由于用户可以有多个角色,但这些角色中有些角色被一访问规则允许,有些则被禁止,有些未定义。这时,我们是让这个用户通过还是拒绝通过。我们认为应该拒绝用户的通过。正是用户角色的复杂性,所以在没有足够证据证明“里面的有些角色被拒绝但实际上这个用户不应该拒绝”的情况下,应该先把这个用户拒绝掉。这也是出于安全性的考虑。

关于企业单位中的部门设置与角色的关系:
我认为部门是一个角色,是一个和现实有密切联系的特殊角色。这个角色中包含了一系列的用户(这个部门的员工,这个部门的计算机(虚拟用户)等等)

原文地址:https://www.cnblogs.com/Linjianyu/p/1033204.html