Apabila membangunkan aplikasi web, selalunya perlu untuk menyekat akses pengguna dalam sistem berdasarkan peranan dan kebenaran mereka. Kawalan kebenaran hierarki ialah kaedah pengurusan kebenaran biasa Ia membahagikan pengguna kepada kumpulan berbeza berdasarkan peranan dan kebenaran, dan setiap kumpulan boleh mengakses kandungan yang berbeza. Dalam PHP7.0, teknologi seperti Session dan MySQL boleh digunakan untuk melaksanakan kawalan kebenaran hierarki.
1. Reka bentuk pangkalan data
Dalam pangkalan data, anda biasanya perlu mencipta tiga jadual: jadual pengguna, jadual peranan dan jadual kebenaran. Berikut ialah reka bentuk struktur tiga jadual:
(1) Jadual pengguna
CIPTA JADUAL users
(
`id` INT(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(50) NOT NULL, `password` VARCHAR(255) NOT NULL, `email` VARCHAR(100), `role_id` INT(11) NOT NULL, PRIMARY KEY (`id`)
); 2) Jadual peranan
BUAT JADUAL
(`id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`)
roles
);(3) Jadual kebenaran
BUAT JADUAL
(`id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, `slug` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`)
permissions
);Di sini, kami menggunakan tiga jadual, antaranya jadual pengguna dan jadual peranan menggunakan kunci asing untuk memastikan ketekalan data.
2. Laksanakan kawalan kebenaran
(1) Log masuk
Apabila log masuk, nama pengguna dan kata laluan pengguna perlu disahkan dan maklumat pengguna disimpan dalam Sesi . Berikut ialah sekeping kod PHP:
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST') {$username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysqli_query($conn, $sql); if(mysqli_num_rows($result) > 0) { $row = mysqli_fetch_assoc($result); $_SESSION['user_id'] = $row['id']; $_SESSION['user_role_id'] = $row['role_id']; header("Location: dashboard.php"); exit; } else { $error = "Invalid email or password"; }
at Selepas berjaya log masuk, ID pengguna dan ID peranan disimpan dalam Sesi untuk pertimbangan dalam lawatan berikutnya.
(2) Semakan kebenaran
Dalam halaman yang memerlukan semakan kebenaran, anda perlu terlebih dahulu menentukan sama ada pengguna telah log masuk dan mendapatkan ID peranan pengguna. Kemudian, baca kebenaran peranan daripada pangkalan data dan buat pertimbangan. Berikut ialah kod PHP yang menyemak sama ada pengguna mempunyai akses:
session_start();
if(!isset($_SESSION['user_id'])) {
header("Location: login.php"); exit;
}
$role_id = $_SESSION['user_role_id'];
$is_allowed = false;
$sql = "SELECT permissions.slug FROM permissions WHERE permissions.id =
$result = mysqli_query($conn, $sql);
$permissions = array () ;
while($row = mysqli_fetch_assoc($result)) {
$permissions[] = $row['slug'];
}
if(in_array('view_dashboard', $permissions)) {
$is_allowed = true;
}
jika(!$is_allowed) {
header("Location: unauthorized.php"); exit;
}
Di sini, kami menggunakan subquery untuk mendapatkan kebenaran bahawa peranan mempunyai ID, dan kemudian menggunakan kata kunci dan tatasusunan IN untuk menentukan sama ada peranan mempunyai hak akses.
(3) Kawal akses
Melalui semakan kebenaran di atas, kami sudah boleh menentukan sama ada pengguna mempunyai kebenaran akses Jika tidak, pengguna perlu disekat daripada akses. Berikut ialah kaedah pelaksanaan:
(1) Dalam halaman yang akses perlu dikawal, letakkan kod semakan kebenaran di atas di bahagian atas Jika pengguna tidak mempunyai kebenaran akses, lompat terus ke yang tidak dibenarkan muka surat.
(2) Jika pengguna mempunyai hak akses, teruskan melaksanakan kod halaman tersebut.
(3) Dalam setiap pautan dan butang yang perlu diakses, slug kebenaran pautan atau butang perlu diluluskan sebagai parameter, contohnya:
> Tambah BeritaDi sini, jika pengguna tidak mempunyai kebenaran untuk menambah_berita, pautan akan disembunyikan.
3. Ringkasan
Kawalan kebenaran hierarki ialah kaedah pengurusan kebenaran biasa yang boleh mengehadkan akses pengguna kepada sistem berdasarkan peranan dan kebenaran mereka. Dalam PHP7.0, teknologi seperti Session dan MySQL boleh digunakan untuk melaksanakan kawalan kebenaran hierarki. Melalui kaedah pelaksanaan di atas, kami boleh melaksanakan kawalan kebenaran hierarki dalam aplikasi web, memastikan keselamatan dan kestabilan sistem.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kawalan kebenaran hierarki dalam PHP7.0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!