البرمجيات الوسيطة (Middleware) وكيفية عملها
تخيل **Middleware** كأنه سلسلة من الفلاتر التي يمر عبرها طلب الـ HTTP قبل أن يصل إلى تطبيقك. كل فلتر (Middleware) يمكنه فحص الطلب وتقرير ما إذا كان سيسمح له بالمرور أم سيقوم بإيقافه وتحويله لمكان آخر. يُستخدم الـ Middleware في مهام متنوعة مثل التأكد من تسجيل الدخول، حماية الموقع من هجمات معينة، أو حتى تغيير لغة الموقع بناءً على إعدادات المستخدم.
1. أنواع الـ Middleware في Laravel
يأتي لارافيل مع مجموعة من البرمجيات الوسيطة الجاهزة والتي يتم تطبيقها تلقائياً، مثل:
- auth: للتأكد من أن المستخدم مسجل دخوله.
- guest: للتأكد من أن المستخدم "زائر" (يستخدم لمنع المسجلين من رؤية صفحة التسجيل مجدداً).
- throttle: لتحديد عدد الطلبات التي يمكن للمستخدم إرسالها في وقت محدد (حماية من الـ Spam).
2. إنشاء Middleware مخصص
يمكنك إنشاء Middleware خاص بك لتنفيذ منطق معين، مثل السماح فقط للأعمار فوق 18 سنة بالدخول:
php artisan make:middleware CheckAge
app/Http/Middleware/CheckAge.php
public function handle(Request $request, Closure $next): Response
{
if ($request->age <= 18) {
return redirect('home');
}
return $next($request); // السماح بالمرور للفلتر التالي
}
3. تطبيق الـ Middleware على المسارات
في Laravel 11، يتم تسجيل وتطبيق الـ Middleware بسهولة في ملف التعريف أو مباشرة في ملف المسارات:
routes/web.php
// تطبيق Middleware واحد
Route::get('/admin', function () {
// ...
})->middleware('auth');
// تطبيق مجموعة من الـ Middleware
Route::get('/profile', function () {
// ...
})->middleware(['auth', 'verified']);
أسئلة شائعة حول Middleware
على عكس النسخ القديمة، Laravel 11 يستخدم ملف
bootstrap/app.php لتسجيل الـ Middleware العالمية والمخصصة، مما جعل هيكلية المشروع أكثر بساطة.
هذا السطر هو الأهم في أي Middleware؛ فهو المسؤول عن تمرير الطلب للطبقة التالية (سواء كانت Middleware آخر أو المتحكم). إذا لم تكتب هذا السطر، سيتوقف الطلب ولن يرى المستخدم أي استجابة.
الدرس القادم
تخزين الملفات والصور
تطبيقات الويب تحتاج دائماً للتعامل مع الصور والملفات المرفوعة. سنتعلم كيف نستخدم نظام Filesystem في لارافيل للتعامل مع التخزين المحلي والـ Cloud.
تعلم تخزين الملفات