在Web MVC 應用程式中實現存取控制清單
存取控制清單(ACL) 的實作可確保使用者有權執行特定操作在應用程式內。以下是完成此任務的徹底方法:
實作 ACL
最有效的方法涉及利用裝飾器模式。這涉及將目標物件包裝在充當保護層的另一個物件中,而不擴展原始類別。以下是範例:
class SecureContainer { protected $target; protected $acl; public function __construct($target, $acl) { $this->target = $target; $this->acl = $acl; } public function __call($method, $arguments) { if ( method_exists($this->target, $method) && $this->acl->isAllowed(get_class($this->target), $method) ) { return call_user_func_array(array($this->target, $method), $arguments); } } }
優點:
物件的角色為基礎的存取控制(RBAC)
要為物件實現RBAC ,您需要考慮以下事實:網域物件包含所有者詳細資訊。修改isAllowed 方法:
$this->acl->isAllowed($this->target->getPermissions(), $command);
旁注
以上是如何在我的 Web MVC 應用程式中有效實施存取控制清單 (ACL)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!