Ran*_*ash 5 database design-patterns rbac yii
我正在尝试设计一个RBAC带有扭曲的数据库(或者也许只有我认为它是扭曲的?)。据我所知,RBAC使用角色和权限来授予/拒绝对系统中某些对象的访问。当我只有一个站点实例并且只需创建一个角色 ' Main admin'、' Secondary admin'、' User' 等时,一切都变得美好而清晰。
但是,如果我在系统中有帐户怎么办?所以我有一个系统,其中有“ London”、“ Tokyo”和“ Moscow”帐户。现在我将为每个帐户设置“主管理员”,以及每个帐户中的许多“用户”——当然,莫斯科人应该无法登录伦敦帐户。我该怎么做?我是否创建了一些额外的表,将分配到用户的帐户绑定?或者我是否将 accountid 添加到分配表?或者也许我应该创建多个角色,如“moscow_main_admin”、“london_main_admin”等。这种情况的最佳方法是什么?
另外我相信我会有一些用户是伦敦帐户的“主管理员”和东京帐户的“次要管理员”。
我计划将 Yii 与它内置的 RBAC 一起使用......如果这有什么不同的话。
如何解决?
先感谢您!
您可以保留您已经使用过的“管理员”角色和规则。并为每个城镇“莫斯科”、“伦敦”等添加新角色...在控制器中,在操作方法中调用 checkAccess,如下例所示。
public function actionEditArticle($town)
{
if(!Yii::app()->user->checkAccess($town)
Yii::app()->end();
// ... more code
}
Run Code Online (Sandbox Code Playgroud)
更高级的方法是在组件目录中扩展 CController,并覆盖该runAction($action)方法。
public function runAction($action)
{
if (isset($_GET['town']) {
if(!Yii::app()->user->checkAccess($_GET['town']) Yii::app()->end();
}
parent::runAction($action);
}
Run Code Online (Sandbox Code Playgroud)