Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan kawalan kebenaran hierarki dalam PHP7.0?

Bagaimana untuk melaksanakan kawalan kebenaran hierarki dalam PHP7.0?

PHPz
PHPzasal
2023-05-26 10:51:061259semak imbas

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 =

(PILIH role_permission.permission_id DARI role_permission WHERE role_permission.role_id = '$role_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 Berita

Di 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!

Kenyataan:
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