Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tetapkan kaedah kawalan kebenaran yang berbeza untuk setiap laluan dalam PHP

Tetapkan kaedah kawalan kebenaran yang berbeza untuk setiap laluan dalam PHP

PHPz
PHPzasal
2023-10-15 11:35:09714semak imbas

Tetapkan kaedah kawalan kebenaran yang berbeza untuk setiap laluan dalam PHP

Dalam PHP, kaedah kawalan kebenaran berbeza ditetapkan untuk setiap laluan dan contoh kod khusus diperlukan

Apabila membangunkan aplikasi web, kawalan kebenaran merupakan aspek yang sangat penting. Untuk melindungi fungsi dan data sensitif dalam aplikasi, kami perlu melaksanakan kawalan kebenaran yang berbeza pada laluan yang berbeza. PHP, sebagai bahasa skrip sebelah pelayan yang berkuasa, boleh membantu kami mencapai ini dengan mudah.

Dalam PHP, kita boleh menggunakan kaedah yang berbeza untuk kawalan kebenaran, seperti kawalan akses berasaskan peranan (Kawalan Akses Berasaskan Peranan, RBAC) dan kawalan akses berasaskan kebenaran (Kawalan Akses Berasaskan Kebenaran , PBAC ) dll. Di bawah, saya akan memperkenalkan dua kaedah kawalan kebenaran biasa dan memberikan contoh kod khusus.

  1. Kawalan capaian berasaskan peranan (RBAC):

Kawalan capaian berasaskan peranan ialah kaedah kawalan kebenaran biasa yang menyediakan Pengguna ditugaskan berbeza peranan, dan peranan pengguna disemak pada setiap laluan untuk melaksanakan kawalan kebenaran. Berikut ialah contoh kod untuk kawalan akses berasaskan peranan:

// 定义角色和对应的权限
$roles = [
  'admin' => ['manage_users', 'manage_products'],
  'user' => ['view_products', 'add_to_cart'],
];

// 获取当前用户的角色
$currentUserRole = $_SESSION['role'];

// 定义需要进行权限控制的路由和对应的角色要求
$routes = [
    '/users' => 'admin',
    '/products' => 'user',
];

// 检查当前用户是否有权限访问当前路由
$route = $_SERVER['REQUEST_URI'];

if (isset($routes[$route]) && $currentUserRole !== $routes[$route]) {
    // 没有权限
    echo '您没有访问该页面的权限!';
    exit;
}

// 执行路由对应的逻辑
// ...

Dalam kod di atas, kami mula-mula mentakrifkan peranan yang berbeza dan kebenaran yang sepadan. Kami kemudiannya mendapat peranan pengguna semasa dan menyemak sama ada pengguna itu mempunyai kebenaran untuk mengakses laluan semasa. Jika tiada kebenaran, mesej segera dikeluarkan dan pelaksanaan program ditamatkan jika tidak, logik penghalaan yang sepadan terus dilaksanakan.

  1. Kawalan Akses Berasaskan Kebenaran (PBAC):

Kawalan akses berasaskan kebenaran ialah satu lagi kaedah kawalan kebenaran biasa yang menggunakan Tetapkan kebenaran khusus secara langsung kepada pengguna, dan semak sama ada pengguna mempunyai kebenaran yang sepadan pada setiap laluan untuk melaksanakan kawalan kebenaran. Berikut ialah contoh kod untuk kawalan akses berasaskan kebenaran:

// 定义权限和需要进行权限控制的路由
$permissions = [
  'manage_users' => ['/users', '/users/edit', '/users/delete'],
  'manage_products' => ['/products', '/products/edit', '/products/delete'],
];

// 获取当前用户的权限
$currentPermissions = $_SESSION['permissions'];

// 检查当前用户是否有权限访问当前路由
$route = $_SERVER['REQUEST_URI'];

$hasPermission = false;
foreach ($permissions as $permission => $routes) {
    if (in_array($route, $routes) && in_array($permission, $currentPermissions)) {
        $hasPermission = true;
        break;
    }
}

if (!$hasPermission) {
    // 没有权限
    echo '您没有访问该页面的权限!';
    exit;
}

// 执行路由对应的逻辑
// ...

Dalam kod di atas, kami mula-mula mentakrifkan kebenaran berbeza dan laluan yang perlu dikawal. Kami kemudian mendapat kebenaran pengguna semasa dan menyemak sama ada pengguna mempunyai kebenaran untuk mengakses laluan semasa. Jika tiada kebenaran, mesej segera dikeluarkan dan pelaksanaan program ditamatkan jika tidak, logik penghalaan yang sepadan terus dilaksanakan.

Ringkasan:

Melalui contoh kod di atas, kita boleh melihat cara menetapkan kaedah kawalan kebenaran yang berbeza untuk setiap laluan dalam PHP. Sama ada kawalan akses berasaskan peranan atau kawalan akses berasaskan kebenaran, kami boleh memilih kaedah yang sesuai berdasarkan keperluan perniagaan tertentu. Sudah tentu, ini hanyalah contoh asas kawalan kebenaran Dalam projek sebenar, pangkalan data, cache, dll. boleh digabungkan untuk melaksanakan logik kawalan kebenaran yang lebih kompleks. Saya harap artikel ini akan membantu semua orang untuk memahami dan melaksanakan kawalan kebenaran dalam PHP!

Atas ialah kandungan terperinci Tetapkan kaedah kawalan kebenaran yang berbeza untuk setiap laluan dalam PHP. 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