php artisan make:middleware CheckPermission該命令會在`app/Http/Middleware` 目錄下創建一個名為`CheckPermission.php` 的文件。
<?php namespace App\Http\Middleware; use Closure; class CheckPermission { public function handle($request, Closure $next) { // 驗證用戶的權限 if (!auth()-> user()->hasPermission('admin')) { abort(403, 'Unauthorized action.'); } return $next($request); } }
在上面的例子中,假設用戶必須具有'admin' 權限才能訪問指定頁面,否則會返回403錯誤。
protected $routeMiddleware = [ // 其他中間件... 'can.access' => \App\Http\Middleware\CheckPermission::class, ];
這樣,我們就可以在路由中使用該別名來應用中間件。
Route::get('/admin/dashboard', function () { // 訪問控制邏輯})->middleware('can.access');
這段代碼確保只有具備'admin' 權限的用戶才能訪問/admin/dashboard頁面。
public function handle($request, Closure $next, $role) { // 驗證用戶的角色if (!auth()->user()->hasRole($role)) { abort(403, 'Unauthorized action.'); } return $next($request); }
在此代碼中,我們增加了一個$role參數,用於傳遞需要驗證的角色。
protected $routeMiddleware = [ // 其他中間件... 'has.role' => \App\Http\Middleware\CheckPermission::class, ];
Route::get('/admin/dashboard', function () { // 訪問控制邏輯})->middleware('has.role:admin');
通過這種方式,只有具備'admin' 角色的用戶才能訪問/admin/dashboard頁面。