Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Melindungi Aplikasi MVC Web Anda dengan Senarai Kawalan Akses (ACL)?

Bagaimana untuk Melindungi Aplikasi MVC Web Anda dengan Senarai Kawalan Akses (ACL)?

DDD
DDDasal
2024-12-25 21:21:15339semak imbas

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

Cara Melaksanakan Senarai Kawalan Akses dalam Aplikasi MVC Web Anda

Melaksanakan ACL

Menggunakan Corak Penghias

Corak penghias melibatkan membalut objek dalam objek lain, memberikan kefungsian yang dipertingkatkan. Ia menangani isu kebolehlanjutan tanpa mengubahsuai kelas asal. Berikut ialah contoh:

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

Pendekatan ini:

  • Boleh digunakan pada mana-mana objek, bukan hanya pengawal.
  • Menguatkuasakan kawalan akses di luar objek sasaran, mematuhi Prinsip Tanggungjawab Tunggal.
  • Membolehkan anda menyuntik contoh terjamin dengan lancar.
  • Boleh dibalut dan digunakan seperti objek asal.

Kawalan Akses Berasaskan Peranan untuk Objek

Untuk menyemak akses untuk Objek Domain dengan pemilik yang ditentukan:

Pilihan 1 (Undang-undang Demeter sedar):

$this->acl->isAllowed( get_class($this->target), $method )

Pilihan 2 (Meminta butiran yang berkaitan):

$command = array( get_class($this->target), $method );
$this->acl->isAllowed( $this->target->getPermissions(), $command )

Pertimbangkan video ini untuk pemahaman lanjut:

  • [Warisan, Polimorfisme & Ujian](pautan)
  • [Jangan Cari Perkara!](pautan)

Salah tanggapan tentang Model

Model dalam MVC bukan kelas. Ia merangkumi lapisan yang mengandungi:

Logik Perniagaan Domain: Berurusan dengan pengiraan, semakan keadaan dan pelaksanaan peraturan perniagaan.

Akses dan Storan Data: Mengendalikan operasi berkaitan data, seperti pangkalan data interaksi.

Perkhidmatan: Abstraksi yang memudahkan kod pengawal, selalunya menyesuaikan objek domain, komponen dan pemeta.

Atas ialah kandungan terperinci Bagaimana untuk Melindungi Aplikasi MVC Web Anda dengan Senarai Kawalan Akses (ACL)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn