簡體   English   中英

RBAC或ACL,用於私人內容?

[英]RBAC or ACL, for private content?

嘗試構建一個微型CMS(各種類型),需要將內容(即圖像)僅用於通過用戶名/密碼登錄的人員。

假設可以有10K這樣的用戶,並且每個用戶在他們自己的帳戶中有大約100-1K圖像,這是其他任何人都無法查看的。 建立這樣一個系統的建議方法是什么?

我的直覺告訴我ACL是正確的方法,因為我的案例中的“角色”是無共享的,所以我必須創建與用戶一樣多的角色。 我是朝正確的方向前進的嗎?

一種特殊的角色可能是“所有者角色”。 擁有對象時,此角色適用。 在客戶端代碼中實現的想法:

if ($owner->isAllowed('view', $image) { do stuff }

RBAC系統:

// initiation of roles somewhere
$this->roles->add(new OwnerRole($user); }

// when called
$roles = $this->getRoles($user);
foreach ($roles as $role) {
     if ($role->isAllowed($user, $action, $object)) { return true; }
}

這意味着owner-role必須能夠檢查誰擁有該對象:

class OwnerRole implements Role
{
    public function __construct(OwernChecker $ownerChecker) {
        $this->owerChecker = $ownerChecker;
    }
    public function isAllowed(User $user, $action, $object) {
        if ($this->ownerChecker->userOwnsObject($user, $object)) etc
    }
}

ownerChecker對象可以給出如何檢查用戶擁有對象的映射。

建議閱讀以下內容:
http://www.xaprb.com/blog/2006/08/16/how-to-build-role-based-access-control-in-sql/
http://www.sqlrecipes.com/database_design/fine_grained_role_based_access_control_rbac_system-3/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM