데코레이터 패턴 사용
데코레이터 패턴은 객체를 다른 객체 내에 래핑하여 향상된 기능을 제공하는 것을 포함합니다. 원래 클래스를 수정하지 않고 확장성 문제를 해결합니다. 예는 다음과 같습니다.
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 ); } } } $acl = new AccessControlList( $currentUser ); $controller = new SecureContainer( $controller, $acl ); $controller->actionIndex(); // Execute method with ACL checking
이 접근 방식은 다음과 같습니다.
정의된 소유자가 있는 도메인 객체에 대한 액세스를 확인하려면:
옵션 1(데메테르의 법칙 인식):
$this->acl->isAllowed( get_class($this->target), $method )
옵션 2(관련 세부정보 요청):
$command = array( get_class($this->target), $method ); $this->acl->isAllowed( $this->target->getPermissions(), $command )
자세한 이해를 위해 다음 동영상을 고려하세요.
MVC의 모델은 클래스가 아닙니다. 다음을 포함하는 레이어를 포함합니다:
도메인 비즈니스 로직: 계산, 조건 확인 및 비즈니스 규칙 구현을 처리합니다.
데이터 액세스 및 저장: 데이터베이스 상호 작용 등 데이터 관련 작업을 처리합니다.
서비스: 도메인 개체, 구성 요소 및 매퍼를 저글링하여 컨트롤러 코드를 단순화하는 추상화입니다.
위 내용은 ACL(액세스 제어 목록)을 사용하여 웹 MVC 애플리케이션을 보호하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!