Bagaimanakah saya boleh melaksanakan Senarai Kawalan Akses dalam aplikasi Web MVC saya dan cara mengendalikan akses berasaskan peranan pengguna?
Pelaksanaan ACL
Corak penghias ialah cara yang berkesan untuk melaksanakan ACL tanpa melanjutkan kelas Pengawal. Begini caranya:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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([ $this ->target, $method ], $arguments );
}
}
}
|
Salin selepas log masuk
Anda boleh menggunakan ini seperti berikut:
1 2 3 4 5 6 | $currentUser = ...;
$controller = ...;
$acl = new AccessControlList( $currentUser );
$controller = new SecureContainer( $controller , $acl );
$controller ->actionIndex();
|
Salin selepas log masuk
Akses Berasaskan Peranan Pengguna
Untuk akses berasaskan peranan , pertimbangkan perkara berikut:
Menyemak Pemilik sebuah Sumber:
- Lepaskan objek itu sendiri kepada ACL untuk semakan kebenaran.
- Jika objek kekurangan butiran yang diperlukan, berikannya dengan jelas.
Contohnya:
1 2 3 4 | $this ->acl->isAllowed(
$this ->target->getPermissions(),
[ $getter , $method ]
);
|
Salin selepas log masuk
Menguatkuasakan Akses Sekatan:
- Pertimbangkan untuk menggunakan lapisan perkhidmatan untuk mengabstraksi akses objek dan semakan ACL.
- Perkhidmatan boleh berinteraksi dengan objek domain untuk mengumpulkan butiran yang diperlukan.
Nota Tambahan pada MVC:
- Model merujuk kepada lapisan, bukan kelas tertentu.
- Logik Perniagaan Domain mengendalikan pengiraan dan syarat tanpa mengambil kira storan data.
- Akses dan Storan Data mengurus pernyataan SQL atau mekanisme pengambilan data.
- Perkhidmatan menyediakan abstraksi dan kemudahan untuk komponen boleh guna semula.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Senarai Kawalan Akses (ACL) dan Akses Berasaskan Peranan dalam Aplikasi MVC Web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!