لماذا يهم هذا الدرس؟
فهم Sessions وCookies واستخدامه بصورة صحيحة داخل مشروع App Router. تثبت Authentication الهوية بينما يحمي Authorization البيانات والMutations. تنقل Sessions وCookies الحالة الموثوقة لكن يجب تفسيرها عند كل Protected Boundary على الخادم.
كيف تفكر فيه؟
- في درس Sessions وCookies، النتيجة التي يجب أن تتحقق: لا تعتمد على إخفاء الزر في Client؛ القرار النهائي للصلاحية يجب أن يكون على الخادم.
- في سياق Sessions وCookies، الخطر الذي يجب أن يبقى تحت السيطرة: فحص Authentication في Navigation أوMiddleware فقط لا يحمي Server Function يمكن استدعاؤها من مسار آخر.
- تطبيق Sessions وCookies: أنشئ Protected Data Function تفرق بين unauthenticated وforbidden واستدعها من Server-rendered Route.
تطبيق عملي
في التطبيق الخاص بدرس Sessions وCookies: لا تعتمد على إخفاء الزر في 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');
}جرّب بنفسك
تمرين Sessions وCookies
أنشئ Protected Data Function تفرق بين unauthenticated وforbidden واستدعها من Server-rendered Route.
- سجل النتيجة المتوقعة قبل التنفيذ
- اختبر حالة صحيحة وحالة فشل مرتبطة بالدرس
- اشرح في سطرين أين يوجد الحد المسؤول عن القرار
