Cara melaksanakan sistem pengurusan kebenaran dalam Laravel
Pengenalan:
Dengan pembangunan aplikasi web yang berterusan, sistem pengurusan kebenaran telah menjadi salah satu fungsi asas bagi banyak aplikasi. Laravel, sebagai rangka kerja PHP yang popular, menyediakan pelbagai alatan dan fungsi untuk melaksanakan sistem pengurusan kebenaran. Artikel ini akan memperkenalkan cara untuk melaksanakan sistem pengurusan kebenaran yang mudah dan berkuasa dalam Laravel dan memberikan contoh kod khusus.
1. Idea Reka Bentuk Sistem Pengurusan Kebenaran
Apabila mereka bentuk sistem pengurusan kebenaran, anda perlu mempertimbangkan perkara penting berikut:
Berdasarkan idea reka bentuk di atas, kita boleh mula melaksanakan sistem pengurusan kebenaran dalam Laravel.
2. Reka bentuk dan migrasi pangkalan data
Dalam Laravel, kami boleh menggunakan migrasi pangkalan data untuk mencipta dan mengubah suai jadual pangkalan data. Berikut ialah reka bentuk pangkalan data yang ringkas:
Mula-mula, buat fail migrasi:
php artisan make:migration create_users_table php artisan make:migration create_roles_table php artisan make:migration create_permissions_table php artisan make:migration create_role_permission_table php artisan make:migration create_user_role_table
Kemudian, tulis struktur jadual dalam fail migrasi yang sepadan (kod ditinggalkan), dan jalankan arahan migrasi:
php artisan migrate
Tiga Tentukan hubungan model
Dalam Laravel. kami Anda boleh menggunakan model Eloquent untuk menentukan hubungan antara jadual pangkalan data. Pertama, kita perlu menentukan tiga model: Pengguna, Peranan dan Kebenaran.
Model pengguna (Pengguna)
namespace App; use IlluminateDatabaseEloquentModel; class User extends Model { // 用户与角色的多对多关系 public function roles() { return $this->belongsToMany('AppRole')->withTimestamps(); } // 判断用户是否拥有某个角色 public function hasRole($role) { if (is_string($role)) { return $this->roles->contains('name', $role); } return !! $role->intersect($this->roles)->count(); } // 判断用户是否拥有某个权限 public function hasPermission($permission) { return $this->hasRole($permission->roles); } }
Role model (Role)
namespace App; use IlluminateDatabaseEloquentModel; class Role extends Model { // 角色与用户的多对多关系 public function users() { return $this->belongsToMany('AppUser')->withTimestamps(); } // 角色与权限的多对多关系 public function permissions() { return $this->belongsToMany('AppPermission')->withTimestamps(); } // 判断角色是否拥有某个权限 public function hasPermission($permission) { if (is_string($permission)) { return $this->permissions->contains('name', $permission); } return !! $permission->intersect($this->permissions)->count(); } }
Model kebenaran (Kebenaran)
namespace App; use IlluminateDatabaseEloquentModel; class Permission extends Model { // 权限与角色的多对多关系 public function roles() { return $this->belongsToMany('AppRole'); } }
namespace AppHttpMiddleware; use Closure; use IlluminateSupportFacadesAuth; class CheckPermission { public function handle($request, Closure $next, $permission) { $user = Auth::user(); if ($user && $user->hasPermission($permission)) { return $next($request); } return redirect()->route('403'); // 没有权限则跳转到403页面 } }
$routeMiddleware
dalam appHttpKernel.php
reeee:
Kaitkan middleware dan penghalaan: appHttpKernel.php
中的$routeMiddleware
数组中注册权限中间件:
protected $routeMiddleware = [ // ... 'permission' => AppHttpMiddlewareCheckPermission::class, ];
关联中间件与路由:
在routesweb.php
中定义需要权限控制的路由,并使用permission
Tentukan laluan yang memerlukan kawalan kebenaran dalam routesweb.php
dan gunakan permission
middleware:
Route::get('/members', 'MemberController@index')->middleware('permission:member_view');
5. anda boleh menggunakan contoh kod berikut untuk mengesahkan identiti pengguna dan mengembalikan paparan yang sepadan berdasarkan kebenaran.
namespace AppHttpControllers; use IlluminateSupportFacadesAuth; class MemberController extends Controller { public function index() { if (Auth::user()->hasPermission('member_view')) { return view('members.index'); } // 没有权限则跳转到403页面 return redirect()->route('403'); } }
@if(Auth::user()->hasPermission('member_view')) <!-- 具有查看成员的权限,显示相关内容 --> <table> ... </table> @else <!-- 没有权限,显示无权限提示 --> <div>您没有查看成员的权限</div> @endif
Melalui langkah di atas, kami berjaya melaksanakan sistem pengurusan kebenaran yang mudah dan berkuasa dalam Laravel Dengan mentakrifkan peranan, kebenaran dan perhubungan yang sepadan, menggunakan perisian tengah untuk memintas laluan, dan menilai kebenaran dalam pengawal dan pandangan, kami boleh mencapai kawalan yang tepat ke atas kebenaran akses pengguna. Saya harap artikel ini dapat membantu anda lebih memahami dan menggunakan fungsi pengurusan kebenaran dalam Laravel.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan sistem pengurusan kebenaran dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!