انتقل إلى محتوى الدرس
الدرس 45
دورة إطار العمل Laravel

حماية المسارات وتوجيهات المصادقة وتحديد معدل الطلباتProtecting Routes with Authentication Middleware and Rate Limiting

حماية المسارات بالبرمجية الوسيطة auth واستخدام توجيهي @auth و @guest في القوالب وحماية تسجيل الدخول بتحديد معدل المحاولات RateLimiter.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

لتقييد الوصول إلى صفحات لوحة التحكم والملف الشخصي والإعدادات للمستخدمين المسجلين فقط، أرفق البرمجية الوسيطة المدمجة auth بالمسارات الفردية أو مجموعات المسارات. عندما يطلب زائر غير مسجل رابطاً محمياً، يعترضه الوسيط ويحفظ الرابط المقصود في الجلسة ثم يوجهه تلقائياً إلى صفحة تسجيل الدخول.

  • حماية مجموعات المسارات (Middleware Group): اجمع كافة مسارات الأعضاء داخل مجموعة محمية بالوسيط auth.
  • تحديد الحارس (Guard Selection): يمكنك تحديد اسم الحارس صراحة مثل auth:web عند تعدد الحراس.
  • حفظ الرابط المقصود (Intended URL): يحفظ الوسيط الرابط المطلوب في الجلسة لإعادة المستخدم إليه فور دخوله.
مخطط معماري يوضح حماية المسارات وتوجيهات المصادقة وتحديد معدل الطلبات في إطار العمل Laravel 12
PHP
Route::middleware('auth')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'ind
    Route::get('/profile', [ProfileController::class, 'edit'])
    Route::post('/logout', [LoginController::class, 'destroy']
});

يجب أن تقتصر صفحات الدخول والتسجيل على الزوار غير المسجلين فقط؛ لذا فإن إرفاق الوسيط guest يوجه المستخدم المسجل فعلياً إلى لوحة التحكم مباشرة. وفي معمارية Laravel 12 الحديثة، يمكنك تخصيص وجهات التوجيه عبر دالتي redirectGuestsTo و redirectUsersTo داخل ملف bootstrap/app.php.

  • وسيط الزوار (guest Middleware): يمنع المستخدم المسجل دخوله من زيارة صفحتي الدخول أو إنشاء الحساب مجدداً.
  • تخصيص توجيه الزوار (redirectGuestsTo): يحدد مسار صفحة الدخول المخصصة داخل ملف bootstrap/app.php.
  • تخصيص توجيه الأعضاء (redirectUsersTo): يحدد الصفحة التي ينتقل إليها العضو المسجل إذا حاول فتح صفحة الدخول.
PHP
// Inside bootstrap/app.php ->withMiddleware()
$middleware->redirectGuestsTo('/account/login');
$middleware->redirectUsersTo('/account/dashboard');

داخل قوالب العرض Blade، استخدم التوجيهين الشرطيين @auth و @guest لإظهار أو إخفاء روابط التنقل وقائمة الحساب أو أزرار الدخول حسب حالة المستخدم. داخل كتلة @auth، تكون قراءة اسم المستخدم عبر auth->user->name آمنة تماماً لأن Laravel تحقق مسبقاً من وجود جلسة نشطة.

  • توجيه الأعضاء (@auth): يعرض عناصر HTML الداخلية فقط عندما يكون الزائر الحالي مسجلاً للدخول.
  • توجيه الزوار (@guest): يعرض أزرار الدخول والتسجيل فقط عندما يكون الزائر غير مسجل.
  • تخصيص الحارس بالعرض (Guard Parameter): يمكنك تمرير اسم الحارس للتوجيه مثل @auth('web') عند الحاجة.
PHP
<nav>
    @auth
        <span>{{ auth()->user()->name }}</span>
    @endauth
    @guest
        <a href="{{ route('login') }}">Sign In</a>
    @endguest
</nav>

تُعد مسارات الدخول هدفاً رئيسياً لهجمات تخمين كلمات المرور، لذا يجب تتبع المحاولات الفاشلة عبر واجهة RateLimiter. قبل استدعاء Auth::attempt، افحص تجاوز الحد عبر tooManyAttempts بمفتاح يدمج البريد وعنوان IP، وسجل الفشل بدالة hit وامسح العداد عند النجاح بدالة clear.

  • فحص تجاوز الحد (tooManyAttempts): تتحقق مما إذا تجاوز المستخدم عدد المحاولات المسموحة مثل 5 محاولات.
  • تسجيل محاولة فاشلة (RateLimiter::hit): تزيد عداد المحاولات الفاشلة مع تحديد زمن التهدئة بالثواني.
  • تصفير العداد عند النجاح (RateLimiter::clear): تمسح سجل المحاولات الفاشلة فور نجاح المستخدم في الدخول.
PHP
$key = 'login:' . $request->ip();
if (RateLimiter::tooManyAttempts($key, 5)) {
    abort(429, 'Too many login attempts.');
}
if (! Auth::attempt($credentials)) {
    RateLimiter::hit($key, 60);
}
RateLimiter::clear($key);

لحماية مسارات الدخول والتسجيل واستعادة كلمة المرور على مستوى التوجيه مباشرة، عرّف محددات سرعة مسماة داخل AppServiceProvider عبر RateLimiter::for وأرفق الوسيط throttle بالمسار. عند تجاوز الحد المسموح في الدقيقة عبر Limit::perMinute، يعيد Laravel تلقائياً استجابة 429 مع رؤوس الرسالة القياسية للتهدئة.

  • تعريف المحدد المسمى (RateLimiter::for): يسجل قاعدة تحديد سرعة بالاسم تعيد كائن Limit::perMinute.
  • تخصيص نطاق العد (by Method): اربط العداد بعنوان IP الزائر أو البريد المدخل لعزل كل مستخدم عن الآخر.
  • وسيط المسار (throttle:login): ألحق الوسيط throttle متبوعاً باسم المحدد لحماية المسار تلقائياً.
PHP
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;

RateLimiter::for('login', function (Request $request) {
    return Limit::perMinute(5)->by($request->ip());
});
// On Route: ->middleware('throttle:login')

يكتمل محيط الأمان لنظام المصادقة في تطبيقك عند دمج وسيطَي auth و guest مع توجيهات Blade ومحددات السرعة RateLimiter. يتحقق كل مسار محمي من هوية المستخدم على الخادم، وتوجه مسارات الزوار الأعضاء النشطين بسلاسة، وتصمد نماذج الدخول أمام هجمات التخمين الآلي.

وجه المقارنة الهندسيالأسلوب اليدوي أو غير المحسنمعيار Laravel 12 الحديث
فحص الدخول بالمتحكمتكرار شرط if (! Auth::check) يدوياً في بداية كل دالةتغليف المسارات المحمية داخل مجموعة Route::middleware('auth')
تغيير مسار الدخولتعديل ملفات النظام الداخلية لتغيير رابط التحويلاستخدام دالة redirectGuestsTo داخل ملف bootstrap/app.php
واجهة شريط التنقلكتابة جمل شرطية مطولة داخل قوالب العرضاستخدام التوجيهين النظيفين @auth و @guest في قوالب Blade
الحماية من التخمينترك مسار الدخول مفتوحاً لآلاف المحاولات الآلية المتتاليةتقييد المسار بالوسيط throttle:login بحد 5 محاولات في الدقيقة
PHP
Route::middleware('guest')->group(function () {
    Route::post('/login', [LoginController::class, 'store'])
        ->middleware('throttle:login');
});
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حول «حماية المسارات وتوجيهات المصادقة وتحديد معدل الطلبات» مفاهيم حماية المسارات بوسيط المصادقة Auth، ووسيط الزوار وتخصيص التحويلات، وتوجيهات المصادقة في قوالب Blade وفق معايير Laravel 12 الحديثة.

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس التالي «تفويض الصلاحيات وبوابات التحكم بالوصول Gates في Laravel» للبناء التراكمي على ما تعلمته.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Rate Limiting معدل الطلبات
حماية المسارات بالبرمجية الوسيطة auth واستخدام توجيهي @auth و @guest في القوالب وحماية تسجيل الدخول بتحديد معدل المحاولات RateLimiter.
للمراجعة
02 Protecting Routes With Auth Middleware حماية المسارات بوسيط المصادقة Auth
المفهوم الهندسي والتطبيق العملي المباشر لقسم حماية المسارات بوسيط المصادقة Auth في إطار العمل Laravel 12.
للمراجعة
03 Guest Middleware and Auth Redirects وسيط الزوار وتخصيص التحويلات
المفهوم الهندسي والتطبيق العملي المباشر لقسم وسيط الزوار وتخصيص التحويلات في إطار العمل Laravel 12.
للمراجعة
04 Blade Auth and Guest Directives توجيهات المصادقة في قوالب Blade
المفهوم الهندسي والتطبيق العملي المباشر لقسم توجيهات المصادقة في قوالب Blade في إطار العمل Laravel 12.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 MVC MVC
Model View Controller
النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
للمراجعة
02 CLI CLI
Command Line Interface
واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
للمراجعة
03 HTTP HTTP
Hypertext Transfer Protocol
بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
للمراجعة
04 PSR PSR
PHP Standards Recommendations
المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «حماية المسارات بوسيط المصادقة Auth» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «وسيط الزوار وتخصيص التحويلات» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من حماية المسارات بوسيط المصادقة Auth في إطار العمل Laravel 12؟

يسهم حماية المسارات بوسيط المصادقة Auth في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «وسيط الزوار وتخصيص التحويلات» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة توجيهات المصادقة في قوالب Blade بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة توجيهات المصادقة في قوالب Blade.

04

لماذا يُعد تطبيق حماية الدخول بتحديد المحاولات مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق تحديد معدل الطلبات بوسيط Throttle في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص حماية المسارات ومعدل الطلبات؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.