Rumah > rangka kerja php > ThinkPHP > Cara menggunakan ThinkPHP6 untuk melaksanakan kawalan kebenaran

Cara menggunakan ThinkPHP6 untuk melaksanakan kawalan kebenaran

WBOY
Lepaskan: 2023-06-20 19:55:42
asal
3247 orang telah melayarinya

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:

  1. Peranan: mempunyai fungsi yang sama dan Pengguna dengan tanggungjawab diberikan kepada peranan untuk memudahkan pengurusan kebenaran mereka.
  2. Kebenaran: Mentakrifkan sumber dan operasi yang boleh diakses oleh pengguna dalam sistem, termasuk pengawal, kaedah dan pandangan.
  3. Hubungan Kebenaran Peranan: kaitkan peranan dengan kebenaran sepadannya untuk memudahkan pengurusan kebenaran pengguna dengan peranan tertentu.

2. Tetapkan kebenaran

  1. Konfigurasikan 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' => []
];
Salin selepas log masuk
  1. Konfigurasikan kebenaran peribadi

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'
    ]
]
Salin selepas log masuk

3. Menggunakan kebenaran dalam pengawal dan pandangan

  1. Sahkan kebenaran

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 {
    // 返回无权访问页面
}
Salin selepas log masuk
  1. Semak peranan pengguna semasa

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();
Salin selepas log masuk
  1. Menggunakan kebenaran dalam paparan

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
Salin selepas log masuk

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:

  1. Jadual pengguna (pengguna): menyimpan maklumat pengguna, termasuk ID pengguna, nama pengguna, kata laluan, dsb.
  2. Jadual peranan (peranan): menyimpan maklumat peranan, termasuk ID peranan dan nama peranan.
  3. Jadual kebenaran: menyimpan maklumat kebenaran, termasuk ID kebenaran dan nama kebenaran.
  4. Jadual kebenaran peranan (role_permission): menyimpan maklumat hubungan antara peranan dan kebenaran.

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'
];
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan