在 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中文网其他相关文章!