Apabila Internet semakin berkembang, banyak tapak web perlu mengawal kebenaran pengguna. Kawalan kebenaran boleh melindungi keselamatan sistem dan menghalang kakitangan yang tidak dibenarkan daripada mengakses sumber sistem, yang sangat penting dalam aplikasi komersial. Apabila membangunkan aplikasi menggunakan PHP, rangka kerja ThinkPHP menyediakan penyelesaian yang mudah.
Rangka kerja ThinkPHP6 menyediakan pengguna dengan keupayaan kawalan kebenaran berdasarkan RBAC (kawalan akses berasaskan peranan). Artikel ini akan memperkenalkan cara menggunakan ThinkPHP6 untuk melaksanakan kawalan kebenaran, termasuk cara menetapkan kebenaran, cara menggunakan kebenaran dalam pengawal dan pandangan serta cara menyimpan maklumat kawalan kebenaran dalam pangkalan data.
1. Konsep asas
Sebelum memperkenalkan cara melaksanakan kawalan kebenaran, kita perlu memahami beberapa konsep asas:
2. Tetapkan kebenaran
Dalam ThinkPHP6, maklumat konfigurasi semua kebenaran disimpan dalam appcontroller dmin.php tengah fail. Terdapat dua jenis kebenaran dalam fail konfigurasi: kebenaran awam dan kebenaran peribadi.
Kebenaran awam merujuk kepada sumber dan operasi yang boleh diakses oleh mana-mana pengguna, seperti halaman utama sistem, dsb. Kebenaran peribadi merujuk kepada sumber dan operasi yang hanya boleh diakses oleh pengguna dengan peranan atau kebenaran tertentu.
Tambahkan semua kebenaran awam pada fail dmin.php appcontroller:
return [ // 公共权限 'public' => [ 'index/index', 'index/home' ], // 私有权限 'private' => [] ];
Untuk kebenaran peribadi kita perlu menetapkannya dalam appcontroller Tambahkan kebenaran ini pada kumpulan kebenaran peribadi fail dmin.php.
Sebagai contoh, kita boleh menambah kebenaran yang dipanggil "pengguna" yang akan membenarkan akses kepada kaedah getUserList dalam pengawal AdminController:
// 私有权限 'private' => [ 'user' => [ 'AdminController/getUserList' ] ]
3. Menggunakan kebenaran dalam pengawal dan pandangan
Apabila pengguna mengakses halaman yang memerlukan kebenaran khusus, kami perlu mengesahkan kebenaran pengguna. Dalam ThinkPHP6, kami boleh menggunakan kaedah semakan yang disediakan oleh kelas Auth untuk mengesahkan sama ada pengguna mempunyai kebenaran khusus.
Sebagai contoh, kami boleh menyemak sama ada pengguna mempunyai kebenaran bernama "pengguna" menggunakan:
if (Auth::check('user')) { // 执行用户有权访问的操作 } else { // 返回无权访问页面 }
Dalam Apabila melakukan operasi tertentu, kita perlu mengetahui peranan pengguna semasa dan berkelakuan sewajarnya berdasarkan peranan mereka. Dalam ThinkPHP6, kita boleh menggunakan kaedah getRole dalam kelas Auth untuk mendapatkan peranan pengguna semasa.
Sebagai contoh, kita boleh mendapatkan peranan pengguna semasa menggunakan:
$role = Auth::getRole();
Kami juga boleh menggunakan kebenaran dalam paparan Kawalan untuk menunjukkan atau menyembunyikan beberapa elemen. Contohnya, dalam templat bilah, kita boleh menggunakan arahan tin untuk menyemak sama ada pengguna semasa mempunyai kebenaran khusus.
Contoh:
<!-- 如果用户有'user'权限,则显示下面的按钮 --> @can('user') <button type="button" class="btn btn-sm btn-primary">操作</button> @endcan
4 Simpan maklumat kawalan kebenaran dalam pangkalan data
Untuk menjadikan kawalan kebenaran lebih fleksibel, kami boleh menyimpan maklumat kebenaran dalam pangkalan data untuk pengurusan yang lebih mudah. dan pengubahsuaian. ThinkPHP6 menyediakan kelas Auth, yang boleh membaca dan mengesahkan maklumat kebenaran daripada pangkalan data dengan mudah.
Apabila menetapkan kebenaran dalam pangkalan data, kita perlu mencipta empat jadual:
Dalam kelas Auth, kami menggunakan kaedah berikut untuk menetapkan nama jadual untuk pengesahan:
protected $table = [ 'auth' => 'auth', 'users' => 'users', 'roles' => 'roles', 'permissions' => 'permissions', 'role_permissions' => 'role_permission' ];
Di atas ialah keseluruhan proses menggunakan ThinkPHP6 untuk melaksanakan kawalan kebenaran. Melalui operasi di atas, kami boleh melaksanakan kawalan kebenaran berasaskan RBAC dengan mudah dan meningkatkan keselamatan dan kebolehkawalan projek.
Atas ialah kandungan terperinci Cara menggunakan ThinkPHP6 untuk melaksanakan kawalan kebenaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!