Memandangkan fungsi tapak web dan aplikasi menjadi semakin kompleks, pengurusan kebenaran menjadi penting. Apabila pengguna log masuk melalui pengesahan, kami mahu mereka dapat mengakses halaman dan ciri yang mereka mempunyai kebenaran, tetapi bukan ke halaman dan ciri yang mereka tidak mempunyai kebenaran. Artikel ini akan menerangkan cara melaksanakan menu navigasi berasaskan kebenaran dalam Laravel supaya kami boleh mengawal perkara yang boleh dilihat pengguna dengan mudah.
Jika anda sudah biasa dengan Laravel, anda boleh melangkau langkah ini. Jika tidak, ikuti langkah ini untuk memasang Laravel:
Pasang Laravel: Buka terminal dan gunakan Komposer untuk memasang Laravel.
composer global require laravel/installer
Konfigurasikan pangkalan data: Tetapkan parameter sambungan pangkalan data dalam fail .env.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database_name DB_USERNAME=your_username DB_PASSWORD=your_password
Jalankan migrasi: Jalankan migrasi pangkalan data untuk mencipta jadual yang diperlukan.
php artisan migrate
Dalam contoh ini, kami akan mencipta pengawal bernama DashboardController dan mentakrifkan tiga laluan untuknya: /dashboard, /users, /roles. Semakan kebenaran yang diperlukan boleh ditambah dalam pembina pengawal.
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class DashboardController extends Controller { public function __construct() { $this->middleware(['auth', 'permissions']); // 添加授权中间件 } public function index() { return view('dashboard'); } public function users() { return view('users'); } public function roles() { return view('roles'); } }
Seterusnya, kita perlu menentukan peraturan kebenaran. Kami mencipta fail yang dipanggil permissions.php di mana kami mentakrifkan semua kebenaran yang diperlukan. Anda boleh mengubah suai atau menambah lebih banyak peraturan kebenaran mengikut keperluan perniagaan anda.
return [ 'admin' => [ 'dashboard' => true, 'users' => true, 'roles' => true, ], 'editor' => [ 'dashboard' => true, 'users' => false, 'roles' => false, ], 'user' => [ 'dashboard' => true, 'users' => false, 'roles' => false, ], ];
Kita perlu mencipta middleware untuk menyemak kebenaran pengguna. Buat perisian tengah bernama CheckPermissions dalam direktori /app/Http/Middleware.
<?php namespace AppHttpMiddleware; use Closure; use IlluminateSupportFacadesAuth; class CheckPermissions { public function handle($request, Closure $next) { $user = Auth::user(); $routeName = $request->route()->getName(); if (!$user->hasPermission($routeName)) { abort(403); } return $next($request); } }
Seperti yang anda lihat, middleware mendapat nama laluan daripada permintaan dan menggunakan kaedah Auth::user() untuk menyemak sama ada pengguna mempunyai kebenaran untuk mengakses laluan. Jika tiada kebenaran, status 403 Forbidden akan dikembalikan.
Maka kita perlu mendaftarkan middleware ke dalam aplikasi. Buka fail /app/Http/Kernel.php dan cari tatasusunan $middlewareGroups. Tambah perisian tengah yang dipanggil kebenaran dalam tatasusunan web.
protected $middlewareGroups = [ 'web' => [ // ... AppHttpMiddlewareCheckPermissions::class, ], // ... ];
Apabila mencipta menu navigasi dalam fail paparan, kita perlu menyemak sama ada pengguna mempunyai kebenaran untuk mengakses setiap pautan. Gunakan kaedah Auth::user() untuk menyemak sama ada pengguna semasa mempunyai kebenaran khusus untuk sesuatu ciri.
<nav> <ul> <li><a href="{{ route('dashboard') }}" @if (!Auth::user()->hasPermission('dashboard'))disabled@endif>Dashboard</a></li> <li><a href="{{ route('users') }}" @if (!Auth::user()->hasPermission('users'))disabled@endif>Users</a></li> <li><a href="{{ route('roles') }}" @if (!Auth::user()->hasPermission('roles'))disabled@endif>Roles</a></li> </ul> </nav>
Dalam model pengguna, kami mentakrifkan kaedah yang dipanggil hasPermission(). Kaedah ini menerima nama laluan dan kemudian menyemak sama ada pengguna mempunyai akses kepada laluan itu.
public function hasPermission($routeName) { $role = $this->role; $permissions = config('permissions.' . $role); return isset($permissions[$routeName]) && $permissions[$routeName]; }
Kami menggunakan fungsi config() untuk membaca peraturan kebenaran dan menyemak sama ada pengguna mempunyai kebenaran akses ke laluan. Kami juga menggunakan atribut peranan dalam model pengguna untuk mendapatkan peranan pengguna tersebut.
Kini kami telah berjaya mencipta menu navigasi berasaskan kebenaran yang melumpuhkan pautan secara automatik apabila pengguna mengakses halaman yang dilarang. Harap artikel ini dapat membantu anda menguasai cara menggunakan Laravel untuk melaksanakan menu navigasi berasaskan kebenaran.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan menu navigasi berasaskan kebenaran dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!