Rumah > Artikel > rangka kerja php > Menggunakan teknologi kebenaran Auth dalam ThinkPHP6
Dengan pembangunan aplikasi Internet yang berterusan, keselamatan aplikasi Web telah menjadi isu yang semakin penting Bagaimana untuk memastikan keselamatan program telah menjadi masalah yang dihadapi oleh semua pembangun. Teknologi kebenaran pengesahan ialah penyelesaian popular yang menyediakan kawalan akses berasaskan peranan.
Dalam artikel ini, kami akan meneroka cara menggunakan teknologi kebenaran Pengesahan dalam ThinkPHP6. Pertama, kita perlu menjelaskan prinsip kerja dan konsep teras kebenaran Pengesahan.
Inti kebenaran Pengesahan ialah kawalan akses berasaskan peranan, yang terbahagi terutamanya kepada tiga langkah berikut:
1.1 Cipta peranan
Sebelum menggunakan kebenaran Pengesahan, anda perlu mencipta peranan terlebih dahulu. Peranan ialah satu set kebenaran yang mentakrifkan akses yang dimiliki pengguna.
1.2 Berikan kebenaran kepada peranan
Selepas mencipta peranan, anda perlu memberikan kebenaran yang sepadan kepada peranan itu. Kebenaran merujuk kepada kebenaran modul atau data berfungsi yang boleh diakses.
1.3 Berikan peranan kepada pengguna
Akhir sekali, peranan perlu diberikan kepada pengguna. Seorang pengguna boleh diberikan berbilang peranan, yang menentukan hak akses yang dimiliki pengguna.
Dalam aliran kerja kebenaran Pengesahan, gunakan pengawal Akses untuk melaksanakan kawalan akses. Pengawal Akses digunakan untuk menyemak sama ada pengguna mempunyai hak akses kepada URL semasa Jika pengguna mempunyai hak akses, dia boleh terus mengakses kandungan yang berkaitan.
Sekarang kami telah memahami cara kebenaran Auth berfungsi, di bawah kami akan menerangkan secara terperinci cara menggunakan teknologi kebenaran Auth dalam ThinkPHP6. Katakan kita mempunyai dua jenis pengguna di latar belakang: pentadbir dan pengguna biasa. Pentadbir boleh mengakses semua modul kandungan, manakala pengguna biasa hanya boleh mengakses beberapa kandungan.
2.1 Pasang dan konfigurasikan pemalam Auth
Sebelum menggunakan teknologi Auth, kita perlu memasang dan mengkonfigurasi pemalam Auth terlebih dahulu. Dalam ThinkPHP6, pemalam Auth telah disepadukan ke dalam rangka kerja dan boleh digunakan dengan konfigurasi mudah.
Pertama, cipta fail konfigurasi auth.php dalam direktori konfigurasi Maklumat konfigurasi adalah seperti berikut:
return [ // 用户认证的类名,不设置则使用核心集成认证方法 'auth' => AppAuth::class, // 不需要认证的路由,可允许所有用户访问的路由 'no_auth' => ['index/index'], // 需要认证且验证失败时跳转的地址 'fail_url' => 'index/login', ];
2.2 Cipta model Pengguna
Buat model Pengguna. Kod yang berkaitan adalah seperti berikut:
<?php namespace appmodel; use thinkModel; class User extends Model { // 定义角色关联 public function roles() { return $this->belongsToMany(Role::class, 'user_role'); } // 判断用户是否有权限访问当前操作 public function hasPermission($permission) { foreach ($this->roles as $role) { if ($role->checkPermission($permission)) { return true; } } return false; } }
2.3 Cipta Role model
Cipta Role model, kod yang berkaitan adalah seperti berikut:
<?php namespace appmodel; use thinkModel; class Role extends Model { // 定义权限关联 public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission'); } // 检查角色是否有权限访问当前操作 public function checkPermission($permission) { foreach ($this->permissions as $item) { if ($item->name == $permission) { return true; } } return false; } }
2.4 Cipta model Permission
Buat model Kebenaran, kod yang berkaitan adalah seperti berikut:
<?php namespace appmodel; use thinkModel; class Permission extends Model { }
2.5 Cipta jadual pangkalan data
Buat jadual pangkalan data, termasuk jadual pengguna, jadual peranan, jadual kebenaran dan dua hubungan jadual pengguna_peranan dan peranan_kebenaran.
Struktur berkaitan jadual pengguna:
Field | Type | Comment |
---|---|---|
id | int | |
username | varchar(20) | |
password | varchar(255) | |
created_at | datetime | |
updated_at | datetime |
struktur berkaitan jadual peranan:
Field | Type | Comment |
---|---|---|
id | int | |
name | varchar(20) | |
created_at | datetime | |
updated_at | datetime |
struktur berkaitan jadual kebenaran:
Field | Type | Comment |
---|---|---|
id | int | |
name | varchar(20) |
jadual peranan_pengguna Struktur berkaitan:
Field | Type | Comment |
---|---|---|
id | int | |
user_id | int | |
role_id | int |
struktur berkaitan jadual role_permission:
Field | Type | Comment |
---|---|---|
id | int | |
role_id | int | |
permission_id | int |
2.6 Pelaksanaan kod pengawal
Yang berikut menggunakan pengawal sampel untuk menggambarkan cara melaksanakan kebenaran Pengesahan. Kod pengawal sampel adalah seperti berikut:
<?php namespace appdmincontroller; use appmodelUser; use thinkController; class Index extends Controller { // 后台首页 public function index() { // 获取当前登录用户 $user_id = session('user_id'); $user = User::find($user_id); // 判断用户是否有权限访问当前操作 if (!$user->hasPermission($this->request->path())) { $this->error('无权访问'); } return view(); } // 登录页面 public function login() { return view(); } // 处理登录请求 public function do_login() { $username = $this->request->param('username'); $password = $this->request->param('password'); // 根据用户名查询用户 $user = User::where('username', $username)->find(); // 验证用户密码 if ($user && password_verify($password, $user->password)) { // 记录登录状态 session('user_id', $user->id); // 跳转到后台首页 $this->redirect('index/index'); } else { $this->error('登录失败'); } } // 退出登录 public function logout() { session('user_id', null); $this->redirect('index/login'); } }
Dalam artikel ini, kami memperkenalkan prinsip kerja, konsep teras dan pelaksanaan aplikasi kebenaran Auth dalam ThinkPHP6. Menggunakan teknologi kebenaran Pengesahan secara berkesan boleh meningkatkan keselamatan aplikasi web dan menyediakan pengguna dengan perkhidmatan yang lebih selamat dan boleh dipercayai. Dalam proses pembangunan aplikasi web yang seterusnya, kita juga harus memberi perhatian kepada jaminan keselamatan dan menggunakan teknologi keselamatan sedia ada sebaik mungkin.
Atas ialah kandungan terperinci Menggunakan teknologi kebenaran Auth dalam ThinkPHP6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!