الكوكيز والجلسات و HTTP ذو الحالة
الكوكيز والجلسات و HTTP ذو الحالة
تكون واجهات REST غالباً بلا حالة، لكن التطبيقات الحقيقية تحتاج الكوكيز والجلسات لمصادقة المتصفح ورموز CSRF وتدفقات OAuth ورسائل flash وصفحات MVC. يدعمها NestJS عبر وسيطات المنصة الأساسية أو إضافات Fastify.
الفكرة الأساسية
تدور هذه الميزة حول التحكم في كيفية تنظيم التطبيق وسلوكه وقت التشغيل. النقاط التالية هي ما يجب أن يعرفه المطور قبل استخدامها في مشروع حقيقي:
- يرسل المتصفح الكوكيز في الطلبات المطابقة ويجب تعليمها HttpOnly و Secure و SameSite كلما أمكن.
- تحمي الكوكيز الموقعة سلامة القيمة لكنها لا تشفرها؛ لا تخزن بيانات حساسة مباشرة بداخلها.
- تخزن الجلسات معرفاً فقط في المتصفح وتحتفظ بالحالة في مخزن جلسات على الخادم.
- يلزم مخزن جلسات مدعوم بقاعدة بيانات أو Redis عند تشغيل أكثر من نسخة للتطبيق.
- تحتاج واجهات API كثيرة الجلسات إلى تسجيل خروج صريح وتدوير الجلسة بعد تغيّر الصلاحيات وأعمار قصيرة للتدفقات عالية الخطورة.
مثال عملي
يوضح المثال التالي الشكل العملي للفكرة داخل مشروع NestJS. ليست الغاية حفظ الكود، بل فهم مكانه في المعمارية:
قائمة تطبيق إنتاجية
- اضبط HttpOnly و Secure و SameSite على كوكيز المصادقة.
- استخدم مخزن جلسات مشتركاً في النشر الأفقي.
- دوّر معرف الجلسة بعد تسجيل الدخول ورفع الصلاحية.
- لا تخزن أسراراً أو ملفات مستخدم كبيرة داخل الكوكيز.
الخلاصة
يغطي هذا الدرس جزءاً متقدماً من NestJS يجب فهمه عند بناء تطبيقات مؤسسية. ركّز على الحدود الواضحة، والسلوك القابل للاختبار، واختيار الأداة المناسبة للسياق بدلاً من استخدام كل ميزة في كل مكان.