محتويات الدورة

Svelte / المتوسط: مسارات Kit وسياسة بيانات الخادم / الدرس 10

الخطافات والمداخل وتفويض الكائن الحالي

أثبت هوية الطلب في الخطافات وافرض سياسة كائن مشتركة لكل حالة خادم.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اشرح مسؤوليات handle وevent.locals ومداخل +server.
  • افصل نقل الملف والمصادقة وCORS وإذن المجال الحالي.

تحمل locals سياقاً متحققاً فقط إذا تحققت منه أنت

يفحص handle الطلب ويرفق سياقاً قبل resolve، ولا تصادق الخاصية بذاتها؛ يبقى الملف أوالترويسة إدخالاً حتى التحقق. استخدم جلسة مراجعة بانتهاء وإلغاء وفشل آمن، ولا تحفظ currentUser عاماً يخلطه SSR. تتلقى الخدمة هوية ضيقة وتفرض المستأجر والكائن عند القراءة أوالأثر. تشترك load والفعل والمدخل بالحماية لا تخطيط واحد. ينبغي أن يحدد العقد ما يحدث إذا تعذر التحقق من الجلسة، فلا تتحول سلطة غير مؤكدة إلى مستخدم مميز لأن قيمة cookie موجودة أولأن الصفحة السابقة كانت قد عرضت حساباً معروفاً.

أثبت هوية يملكها الطلب دون متغير عام

يتحقق الجزء من ملف جلسة ويضع الناتج في locals لهذا الحدث دون تنفيذ المتحقق أوالتدوير أوتحديث الدور. تتابع resolve المعالجة، وقد يركب hook بآخر فتراجع الترتيب والتحويل. يبقى +server مدخلاً مستقلاً بعقد إدخال وإخراج وطريقة لا يرث النموذج أوالتخطيط تلقائياً. لم يشغل المقرر hook أوملفاً أوendpoint. يوضح هذا المثال مسؤولية بناء الهوية فقط، ولا يجعل إرفاقها إذناً آلياً بكل كائن؛ تحتاج الخدمة مقارنة الطلب بالنطاق الفعلي والعملية المطلوبة.

javascript خطاف هوية خاصة بالطلب توضيحي
// src/hooks.server.js
export async function handle({event,resolve}) {
  const credential=event.cookies.get("session");
  event.locals.principal=await sessions.verifyCurrent(credential);
  return resolve(event);
}

sessions اعتماد مراجع غير منفذ؛ لم يعالج اعتماد أو مسار أو رد.

احم الكائن لا URL الصفحة فقط

قد يصل المقرر بقائمة أوload أوفعل أوendpoint، فطبق الأهلية نفسها ووثق تشابه الممنوع والغائب للعامة. يحدد المعرف المطلوب لا الإذن. تحل الطريقة وCORS والملف مشكلات مختلفة؛ تضبط CORS قراءة المتصفح ولا تصادق غيره أوتعوض CSRF للاعتماد الآلي. افصل الأصل والهوية والفعل ولا توسع الأصول لإصلاح جلسة. عند تشخيص منع لا تختبر الصفحة وحدها؛ قد يكون طريق آخر يستعمل مستودعاً عاماً بلا شرط مستأجر فيكشف البيانات رغم صحة واجهة التنقل والحارس البصري.

افحص الشروط المستقلة على الكائن نفسه

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

javascript سياسة تحرير حالية محلية كاملة
function mayEdit(p,course,now){return p.tenant===course.tenant && p.roles.includes("editor") && now<p.expires;}
const course={id:"c1",tenant:"lab-a"};
console.assert(mayEdit({tenant:"lab-a",roles:["editor"],expires:1000},course,999));
console.assert(!mayEdit({tenant:"lab-b",roles:["editor"],expires:1000},course,999));
console.assert(!mayEdit({tenant:"lab-a",roles:["editor"],expires:1000},course,1000));

تفحص الشروط الثلاثة محلياً دون جلسة أوhook أوendpoint أوكتابة دائمة.

أنه السلطة والنتائج الخاصة باتساق

ينهي الخروج سلطة الخادم ويمسح الملف المطابق، ولا تكشف مخابئ العميل والنتائج الحساب السابق. لا يثبت غياب الملف إلغاء معرف مسروق بالخادم. تحقق من الدور الحالي ومتطلب المصدر ولا تحفظ الامتياز المنسوخ للأبد. يشغل المقرر الشرط فقط دون hook أوملف أوهوية أوCORS أوCSRF أوHTTP. يحتاج الباقي هويات آمنة بكل مدخل في مشروع معزول مأذون مع تبديل حساب أثناء الطلب. يمنع ذلك الخلط بين دورة عرض انتهت ودورة سلطة قد تستمر في المخزن أوفي عمل بدأ تحت هوية أقدم.

الأخطاء الشائعة وإصلاحها

يصبح ملف عشوائي هوية موثوقة

لماذا يحدث؟
اختلط نقل الاعتماد بنجاح التحقق منه.
كيف تصلحه؟
طبق بروتوكول الجلسة قبل إنشاء locals الموثوقة.
كيف تتجنب تكراره؟
اختبر المخالف والغائب والمنتهي والملغى بصورة منفصلة.

يخلط currentUser عام مستدعي SSR

لماذا يحدث؟
تجاوزت هوية الطلب عمر حدثها وصارت حالة مشتركة متغيرة.
كيف تصلحه؟
اجعل الهوية بملكية الحدث ومرر سياقاً صريحاً.
كيف تتجنب تكراره؟
اختبر الهويات المتداخلة والنتائج المتأخرة.

تملك صفحة محمية مدخلاً مباشراً غير محمي

لماذا يحدث؟
حلت بوابة الواجهة محل سياسة الكائن المشتركة.
كيف تصلحه؟
افرض الأهلية داخل كل مدخل وحالة خادم.
كيف تتجنب تكراره؟
اختبر القائمة وload والفعل والمدخل للكائن نفسه.

اختبر فهمك

1. هل تصادق event.locals قيمة الهوية الموجودة فيها؟

اعرض الحل المشروح

لا. هي حاوية سياق طلب؛ يتحقق التطبيق من الاعتماد ويضع هوية حالية موثوقة ثم تطبق الخدمة سياسة الكائن. اختبر المتحقق وحدود السياسة منفصلة ولا تعتبر الاسم ضمان أمن.

2. لماذا يختلف حذف الملف عن الإلغاء بالخادم؟

اعرض الحل المشروح

يزيل الحذف قيمة المتصفح بالسمات المطابقة وقد يبقى المعرف المنسوخ صالحاً بالمخزن. أنه السلطة بالبروتوكول وافحص الانتهاء والإلغاء مستقلين، ووافق الحالة الخاصة والرد القديم مع الهوية الجديدة.

أهم ما تعلمته

  • تثبت الخطافات سياق الطلب وتفرض الخدمات سلطة الكائن.
  • أدلة الملف والأصل والهوية طبقات مختلفة.

المراجع الرسمية