我目前正在为资源设计一个基于角色的认证系统,其中许多用户对它有不同的访问权限。基于角色的可扩展认证
角色可能是单个用户或一组角色(因此角色是角色树)。 (见下图)
资源可以有多个身份验证属性(比如读,写,删除),其中的每一个,这是允许做访问操作角色的列表。 (见下图)
的问题是,如果我要检查,如果用户具有访问财产的权利,我有在最坏的情况下(其中n是角色的数量来遍历ñ树木分配给一个财产)。
因此,例如要检查'最大'可能读取的属性,我可能必须检查市场营销,管理和行政树,如果他们包含'最大'。
你知道的任何算法或替代办法,同时保持角色系统或者同样强大从而消除了相当昂贵的树搜索。
对于n个角色,最好的情况是O(log(n))。
感谢, 菲昂
就我所见,您对功能需求/规范的描述包括树。因此,无论您需要更改规格,还是想方设法防止树搜索“相当昂贵”。 – ChrisW 2009-05-26 02:36:00