CakePHP ialah rangka kerja pembangunan web PHP yang pantas dan fleksibel dengan banyak ciri berguna, salah satunya ialah Senarai Kawalan Akses (ACL). ACL membolehkan anda menentukan pengguna yang boleh mengakses bahagian mana aplikasi anda. Walau bagaimanapun, jika anda seorang pembangun baru atau tidak biasa dengan senarai kawalan akses, ia mungkin berasa sedikit mengelirukan. Dalam artikel ini, saya akan menunjukkan kepada anda cara menggunakan ACL dalam CakePHP.
Apakah itu senarai kawalan akses?
Senarai kawalan akses ialah mekanisme keselamatan yang mengehadkan pengguna yang boleh mengakses sumber dalam sistem. ACL boleh digunakan pada semua peringkat aplikasi, seperti pengawal, tindakan dan pandangan. ACL biasanya terdiri daripada dua aspek: peranan dan kebenaran. Peranan ialah sekumpulan pengguna dan kebenaran ialah peraturan yang menentukan perkara yang boleh dilakukan oleh peranan.
Langkah 1: Sediakan jadual pangkalan data
Untuk menggunakan ACL dalam CakePHP, anda perlu menyediakan jadual pangkalan data untuk menyimpan maklumat pengguna, peranan dan kebenaran. Pendekatan mudah ialah membuat tiga jadual dalam aplikasi anda: pengguna, peranan dan kebenaran. Berikut ialah penyataan penciptaan jadual SQL untuk jadual ini:
CREATE TABLE users (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE, password CHAR(40), role_id INT UNSIGNED
);
CREATE TABLE roles (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) UNIQUE
);
BUAT keizinan JADUAL (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) UNIQUE
);
Langkah 2: Cipta model
Seterusnya, anda perlu mencipta model untuk berinteraksi dengan jadual dalam pangkalan data. Dalam CakePHP, anda boleh menggunakan alat baris arahan untuk menjana kod model. Contohnya, untuk mencipta model Pengguna, jalankan arahan berikut:
Pengguna model tong/kek
Kemudian, edit fail model yang dijana mengikut keperluan. Dalam contoh ini, kita perlu menambah kod untuk model pengguna yang dipautkan kepada model peranan:
Pengguna kelas memanjangkan AppModel {
public $belongsTo = array('Role');
}
Kemudian, anda perlu untuk mencipta peranan dan Kebenaran dimodelkan dengan cara yang sama.
Langkah 3: Konfigurasikan komponen ACL
Seterusnya, anda perlu mengkonfigurasi komponen ACL. Dalam CakePHP, komponen ACL tersedia sebagai komponen pengawal. Tambahkan kod berikut dalam AppController anda:
public $components = array(
'Acl', 'Auth' => array( 'authorize' => array( 'Actions' => array('actionPath' => 'controllers') ) )
);
Ini akan mendayakan komponen ACL dan Pengesahan serta mentakrifkan Keizinan "Tindakan" taip. Pilihan "actionPath" menentukan laluan ke tindakan pengawal.
Langkah 4: Buat peranan dan kebenaran untuk pengguna
Seterusnya, anda perlu mencipta peranan dan kebenaran yang sepadan untuk setiap pengguna dalam pangkalan data. Ini boleh dilakukan melalui kaedah AclComponent::allow() dalam komponen ACL. Berikut ialah contoh:
// Benarkan John mengakses tindakan tambah dan edit PostsController
$this->Acl->allow(array('User' => 'John' ), 'pengawal/Siaran/tambah');
$this->Acl->allow(array('User' => 'John'), 'controllers/Posts/edit');
Ini boleh dilakukan semasa pemulaan aplikasi atau apabila setiap pengguna mula-mula log masuk.
Langkah Lima: Semak Kebenaran Pengguna
Setelah anda menetapkan peranan dan kebenaran kepada setiap pengguna dalam pangkalan data, anda boleh menyemak menggunakan kaedah AclComponent::check() dalam komponen ACL Sama ada pengguna mempunyai akses kepada tindakan. Contohnya:
jika ($this->Acl->check(array('User' => 'John'), 'controllers/Posts/add')) {
// John has permissions to access the add action in the Posts controller
} lain {
// John does not have permissions to access the add action in the Posts controller
}
Ringkasan
Di atas adalah asas cara menggunakan ACL dalam CakePHP. Untuk mengetahui lebih lanjut tentang kefungsian ACL dan cara menetapkan tahap kawalan akses yang lebih tinggi kepada peranan dan kebenaran, lihat bahagian Senarai Kawalan Akses dalam dokumentasi CakePHP. Menggunakan ACL boleh membantu anda melindungi aplikasi anda dan memastikan bahawa hanya pengguna yang dibenarkan boleh mengakses maklumat sensitif.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan ACL (Senarai Kawalan Akses) dalam CakePHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!