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頁面。