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