لماذا يهم هذا الدرس؟

فهم التفويض على الخادم واستخدامه بصورة صحيحة داخل مشروع App Router. تثبت Authentication الهوية بينما يحمي Authorization البيانات والMutations. تنقل Sessions وCookies الحالة الموثوقة لكن يجب تفسيرها عند كل Protected Boundary على الخادم.

كيف تفكر فيه؟

  • في درس التفويض على الخادم، النتيجة التي يجب أن تتحقق: لا تعتمد على إخفاء الزر في Client؛ القرار النهائي للصلاحية يجب أن يكون على الخادم.
  • في سياق التفويض على الخادم، الخطر الذي يجب أن يبقى تحت السيطرة: فحص Authentication في Navigation أوMiddleware فقط لا يحمي Server Function يمكن استدعاؤها من مسار آخر.
  • تطبيق التفويض على الخادم: أنشئ Protected Data Function تفرق بين unauthenticated وforbidden واستدعها من Server-rendered Route.

تطبيق عملي

في التطبيق الخاص بدرس التفويض على الخادم: لا تعتمد على إخفاء الزر في Client؛ القرار النهائي للصلاحية يجب أن يكون على الخادم.

authorization.tstypescript
export async function requireProjectAccess(projectId: string) {
  const session = await getSession();
  if (!session) throw new Error('UNAUTHENTICATED');
  if (!(await canAccessProject(session.userId, projectId))) throw new Error('FORBIDDEN');
}

جرّب بنفسك

Practice

تمرين التفويض على الخادم

أنشئ Protected Data Function تفرق بين unauthenticated وforbidden واستدعها من Server-rendered Route.

  • سجل النتيجة المتوقعة قبل التنفيذ
  • اختبر حالة صحيحة وحالة فشل مرتبطة بالدرس
  • اشرح في سطرين أين يوجد الحد المسؤول عن القرار

الخلاصة