مارک پلاس

تکنولوژی نوین اینترنتی

اعمال Middleware به گروهی از مسیرها

دسته‌بندی‌ها

اعمال Middleware به گروهی از مسیرها
Middleware به گروهی از مسیرها

در لاراول، می‌تونی یک Middleware رو روی یک گروه از مسیرها (Route Group) اعمال کنی تا همه‌ی مسیرهای داخل اون گروه به صورت خودکار توسط اون Middleware بررسی بشن.


✅ مثال ساده: اعمال Middleware به گروه مسیرها

فرض کن می‌خوای همه‌ی مسیرهای /dashboard فقط برای کاربرهای وارد شده (auth) در دسترس باشه:

php
Route::middleware(['auth'])->group(function () { Route::get('/dashboard', [DashboardController::class, 'index']); Route::get('/settings', [DashboardController::class, 'settings']); Route::get('/profile', [UserController::class, 'profile']); });

🟢 در این حالت، هر سه مسیر فقط در صورتی در دسترس هستند که کاربر وارد شده باشد.


✅ چند Middleware با هم

اگه بخوای چند Middleware به گروهی از مسیرها بدی (مثلاً احراز هویت + بررسی نقش):

php
Route::middleware(['auth', 'is_admin'])->prefix('admin')->group(function () { Route::get('/dashboard', [AdminController::class, 'dashboard']); Route::get('/users', [AdminController::class, 'users']); });

🔐 اینجا مسیرهای /admin/dashboard و /admin/users:

  • اول بررسی می‌شن که کاربر وارد شده باشه (auth)

  • بعد بررسی می‌شه که کاربر ادمین باشه (is_admin)


✅ اعمال Middleware روی مسیرهای API

در routes/api.php هم می‌تونی این کارو انجام بدی:

php
Route::middleware('auth:sanctum')->group(function () { Route::get('/me', [UserController::class, 'me']); Route::post('/logout', [AuthController::class, 'logout']); });

در این حالت فقط کاربرهایی که با Sanctum لاگین کرده‌ان به این مسیرها دسترسی دارن.


✅ مثال واقعی‌تر با Middleware سفارشی

فرض کنیم یک middleware به اسم check.plan ساختی که بررسی می‌کنه کاربر اشتراک فعال داره یا نه.

php
Route::middleware(['auth', 'check.plan'])->prefix('premium')->group(function () { Route::get('/videos', [PremiumController::class, 'videos']); Route::get('/ebooks', [PremiumController::class, 'ebooks']); });

✅ خلاصه جدول‌وار

عملکد نمونه
اعمال ۱ middlewaremiddleware('auth')
اعمال چند middlewaremiddleware(['auth', 'role'])
همراه با prefixprefix('admin')->middleware(...)
مناسب برای APIدر api.php با auth:sanctum یا auth:api

اگه خواستی یه مثال عملی از middleware نقش‌ها یا سطح دسترسی برای کاربران توی یه پروژه واقعی برات بسازم، فقط بگو 🌟

محتوای مرتبط

پست‌های مرتبط