如何在 Web MVC 應用程式中實現存取控制清單以及如何處理基於使用者角色的存取?
ACL 實作
裝飾器模式是在不擴展 Controller 的情況下實現 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([$this->target, $method], $arguments); } } }
您可以如下使用:
$currentUser = ...; $controller = ...; $acl = new AccessControlList($currentUser); $controller = new SecureContainer($controller, $acl); $controller->actionIndex(); // ACL-protected controller methods
使用者基於角色的存取
用於基於角色的訪問,請考慮以下事項:
檢查所有者資源:
例如:
$this->acl->isAllowed( $this->target->getPermissions(), // Get object permissions [$getter, $method] // Command );
強制存取限制:
附加說明MVC:
以上是如何在 Web MVC 應用程式中實現存取控制清單 (ACL) 和基於角色的存取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!