高级基于角色的访问控制


Advanced Role-Based Access Control

所以,我对RBAC和ACL做了一些研究,但所有的例子都非常"一维",不太适合我的需要(我认为至少)。

所以,我有国家有一个总统副总统Coach1等。

目前我有14个国家,每个角色不能在不同的国家拥有权限。

此外,我有俱乐部经理教练球员等。

最好的解决方案是什么?

编辑:一个用户既可以是一个国家的总统,也可以是另一个国家的教练,同时还是一个俱乐部的球员,等等。

你的问题不是很清楚,但据我所知,一个人可以在一个国家担任副总统,但在另一个国家却什么都不是,这就是让你困惑的地方——你如何建立这个模型?如果我得到了正确的问题,那么在我使用的RBAC实现中(用PHP编写的Yii框架)有这个东西叫做"业务规则"。业务规则是一个返回true或false的PHP代码片段,可以为特定的角色附加或定义(举个简单的例子),这意味着每次检查一个人是否"具有此角色"业务规则时,这个人被附加此角色是不够的。如果业务规则附加到此角色,则运行该规则,并且该代码片段的答案(布尔值)确定该人是否"真的"具有此角色。换句话说,你在这里获得了额外的灵活性所以不是:

一个人有"副总裁"的角色吗?->如果他担任这个角色,他就是每个国家的副总裁(!…)。

你可以有一个更精细的检查,像这样:

一个人在a国有副总裁的角色吗?(国家A作为参数传递给RBAC层,RBAC层已经掌握了'person'数据结构-> RBAC层运行biz规则片段。您编写的代码检查特定用户与特定国家的关联并返回布尔值,该值确定该用户是否是a国的副总裁。

剩下的就是在应用程序中插入逻辑,在DB(选择)中强制每个国家/地区有一个副总统的唯一性,然后就完成了!

希望对你有帮助。