デコレータ パターンの使用
デコレーター パターンには、オブジェクトを別のオブジェクト内でラップすることが含まれます。機能が強化されました。これは、元のクラスを変更せずに拡張性の問題に対処します。以下に例を示します。
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) を使用して Web MVC アプリケーションを保護するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。