zoukankan      html  css  js  c++  java
  • 用户角色权限

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

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


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

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

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

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


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


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

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

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

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

  • 相关阅读:
    C# 文件类的操作---删除
    C#实现Zip压缩解压实例
    UVALIVE 2431 Binary Stirling Numbers
    UVA 10570 meeting with aliens
    UVA 306 Cipher
    UVA 10994 Simple Addition
    UVA 696 How Many Knights
    UVA 10205 Stack 'em Up
    UVA 11125 Arrange Some Marbles
    UVA 10912 Simple Minded Hashing
  • 原文地址:https://www.cnblogs.com/Linjianyu/p/1033204.html
Copyright © 2011-2022 走看看