في هذا الدرس 6تصفّح المواضيع
لتقييد الوصول إلى صفحات لوحة التحكم والملف الشخصي والإعدادات للمستخدمين المسجلين فقط، أرفق البرمجية الوسيطة المدمجة auth بالمسارات الفردية أو مجموعات المسارات. عندما يطلب زائر غير مسجل رابطاً محمياً، يعترضه الوسيط ويحفظ الرابط المقصود في الجلسة ثم يوجهه تلقائياً إلى صفحة تسجيل الدخول.
- حماية مجموعات المسارات (Middleware Group): اجمع كافة مسارات الأعضاء داخل مجموعة محمية بالوسيط auth.
- تحديد الحارس (Guard Selection): يمكنك تحديد اسم الحارس صراحة مثل auth:web عند تعدد الحراس.
- حفظ الرابط المقصود (Intended URL): يحفظ الوسيط الرابط المطلوب في الجلسة لإعادة المستخدم إليه فور دخوله.
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): يحدد الصفحة التي ينتقل إليها العضو المسجل إذا حاول فتح صفحة الدخول.
// 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') عند الحاجة.
<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): تمسح سجل المحاولات الفاشلة فور نجاح المستخدم في الدخول.
$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 متبوعاً باسم المحدد لحماية المسار تلقائياً.
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 محاولات في الدقيقة |
Route::middleware('guest')->group(function () {
Route::post('/login', [LoginController::class, 'store'])
->middleware('throttle:login');
});
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «حماية المسارات وتوجيهات المصادقة وتحديد معدل الطلبات» مفاهيم حماية المسارات بوسيط المصادقة Auth، ووسيط الزوار وتخصيص التحويلات، وتوجيهات المصادقة في قوالب Blade وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «تفويض الصلاحيات وبوابات التحكم بالوصول Gates في Laravel» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «حماية المسارات بوسيط المصادقة Auth» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «وسيط الزوار وتخصيص التحويلات» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من حماية المسارات بوسيط المصادقة Auth في إطار العمل Laravel 12؟
يسهم حماية المسارات بوسيط المصادقة Auth في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «وسيط الزوار وتخصيص التحويلات» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة توجيهات المصادقة في قوالب Blade بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة توجيهات المصادقة في قوالب Blade.
لماذا يُعد تطبيق حماية الدخول بتحديد المحاولات مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق تحديد معدل الطلبات بوسيط Throttle في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص حماية المسارات ومعدل الطلبات؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.