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
Lepaskan: 2024-12-25 21:21:15
asal
335 orang telah melayarinya

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
Salin selepas log masuk

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 )
Salin selepas log masuk

Pilihan 2 (Meminta butiran yang berkaitan):

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

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan