ホームページ > バックエンド開発 > PHPチュートリアル > アクセス制御リスト (ACL) を使用して Web MVC アプリケーションを保護するにはどうすればよいですか?

アクセス制御リスト (ACL) を使用して Web MVC アプリケーションを保護するにはどうすればよいですか?

DDD
リリース: 2024-12-25 21:21:15
オリジナル
335 人が閲覧しました

How to Secure Your Web MVC Application with an Access Control List (ACL)?

Web MVC アプリケーションにアクセス コントロール リストを実装する方法

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
            );
        }
    }
}

$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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート