0

因此,我对 RBAC 和 ACL 进行了一些研究,但所有示例都非常“一维”并且不太适合我的需求(至少我认为)。

所以,我所拥有的是有总统、副总统教练等的国家。

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

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

最好的解决方案是什么?

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

4

1 回答 1

1

您的问题并不完全清楚,但据我所知,一个人可以是一个国家的副总统,但在另一个国家却是无名小卒,这让您感到困惑-您如何建模?如果我的问题是正确的,那么在我使用的 RBAC 实现 tnat(用 PHP 编写的 Yii 框架)中有一个叫做“业务规则”的东西'。业务规则是一个返回 true 或 false 的 PHP 代码片段,可以为特定角色附加或定义(举个简单的例子),这意味着每次检查一个人是否“有这个角色”业务规则,对于被附加这个角色的人来说是不够的。如果一个 biz 规则附加到这个角色,它就会运行,并且该代码片段的答案(布尔值)确定这个人是否“真的”有这个角色。换句话说,您在这里获得了额外的灵活性,而不是:

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

您可以像这样进行更精细的检查:

一个人在 A 国担任副总统吗?(国家 A 正在作为参数传递给 RBAC 层,该层已经拥有 'person' 数据结构-> RBAC 层运行 biz 规则片段。您编写的代码检查该特定用户与该用户的亲和力某个国家,返回布尔值,判断用户是否是A国的副总裁。

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

希望有帮助。

于 2013-05-13T11:37:33.410 回答