這是一個示例,使用參數化中間件演示基於角色的路線保護:
此中間件檢查身份驗證的用戶是否具有指定的角色。 讓我們看看它在路由定義中的使用方式:
namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class EnsureUserHasRole { public function handle(Request $request, Closure $next, string ...$roles) { if (!$request->user()?->hasAnyRole($roles)) { return response()->json(['error' => 'Insufficient permissions'], 403); } return $next($request); } }
use App\Http\Controllers\PostController; use App\Http\Middleware\EnsureUserHasRole; Route::prefix('posts')->group(function () { // Public routes Route::get('/', [PostController::class, 'index']); // Editor routes Route::put('/{id}', [PostController::class, 'update']) ->middleware(EnsureUserHasRole::class . ':editor'); Route::post('/', [PostController::class, 'store']) ->middleware(EnsureUserHasRole::class . ':editor'); // Admin routes Route::delete('/{id}', [PostController::class, 'destroy']) ->middleware(EnsureUserHasRole::class . ':admin'); });
以上是Laravel中的參數化中間件的詳細內容。更多資訊請關注PHP中文網其他相關文章!