3.6 فهم إدارة حالة الجلسة Session State Management #
يحافظ Oracle APEX بشكل شفاف على حالة الجلسة ويوفر للمطورين القدرة على الحصول على قيم حالة الجلسة وتعيينها من أي صفحة في التطبيق.
3.6.1 ما هي حالة الجلسة ؟ Session State #
تتيح حالة الجلسة Session State للمطورين تخزين واسترجاع القيم للمستخدم أثناء تنقله بين صفحات التطبيق المختلفة.
بروتوكول نقل النص التشعبي (HTTP)، وهو البروتوكول الذي تُنقل عبره صفحات HTML في أغلب الأحيان، هو بروتوكول عديم الحالة. يتصل متصفح الويب بالخادم فقط لمدة تنزيل صفحة كاملة. يُعامل الخادم كل طلب صفحة كحدث مستقل، لا علاقة له بأي طلبات صفحات سابقة أو قد تحدث مستقبلاً. للوصول إلى قيم النماذج المُدخلة في صفحة لاحقة، يجب تخزين القيم كحالة جلسة. يحافظ Oracle APEX على حالة الجلسة بشفافية، ويُتيح للمطورين إمكانية الحصول على قيم حالة الجلسة وتعيينها من أي صفحة في التطبيق.
3.6.2 حول معرفات الجلسة #
معرف الجلسة Session ID هو رقم فريد يتم تعيينه لمستخدم معين طوال مدة زيارة هذا المستخدم (أو الجلسة).
يُحدد مُحرك Oracle APEX هوية المستخدم لكل طلب صفحة، بالإضافة إلى مُعرّف الجلسة لجلب حالة الجلسة من قاعدة البيانات. يظهر مُعرّف الجلسة بوضوح في عنوان URL لطلب الصفحة:
- المعلمة الثالثة في صيغة عنوان URL f?p:
https://apex.example.com/ords/f?p=392:3:13766599855150
- المعلمة
session
في بناء جملة عنوان URL سهلة الاستخدام Friendly URL Syntax::
https://apex.example.com/ords/mycompany/r/hr-app/update-employees?session=13766599855150
في كلا المثالين، معرف الجلسة Session ID هو 13766599855150
.
من المواقع المرئية الأخرى بيانات HTML POST للصفحة، وبشكل غير مباشر في محتوى ملف تعريف ارتباط الجلسة. يُرسل مُحرك APEX هذا الملف أثناء المصادقة، ويُحتفظ به طوال مدة جلسة التطبيق (أو المتصفح).
يُعيّن APEX مُعرّفات جلسة جديدة أثناء معالجة المصادقة، ويُسجّل هوية المستخدم المُصادق عليه باستخدام مُعرّف الجلسة، ويتحقق باستمرار من مُعرّف الجلسة في عنوان URL أو بيانات POST لكل طلب صفحة باستخدام ملف تعريف ارتباط الجلسة وسجل الجلسة في قاعدة البيانات. تُوفّر هذه الفحوصات للمستخدمين مرونةً وأمانًا.
على الرغم من أن معرف الجلسة هو المفتاح لحالة الجلسة، فإن ملف تعريف ارتباط الجلسة وسجل الجلسة يحميان سلامة معرف الجلسة وحالة مصادقة المستخدم.
3.6.3 ما هي الجلسة ؟ Session #
الجلسة Session عبارة عن بنية منطقية تنشئ استمرارية (أو سلوكًا ثابتًا) عبر مشاهدات الصفحة.
يُخصَّص لكل جلسة مُعرِّف فريد. يستخدم مُحرِّك Oracle APEX هذا المُعرِّف (أو مُعرِّف الجلسة) لتخزين واسترجاع مجموعة بيانات عمل التطبيق (أو حالة الجلسة) قبل كل عرض صفحة وبعده. ولأن الجلسات مستقلة تمامًا عن بعضها البعض، يُمكن لأي عدد من الجلسات أن يتواجد في قاعدة البيانات في الوقت نفسه. كما يُمكن للمستخدم تشغيل نُسخ متعددة من التطبيق في وقت واحد في برامج متصفح مختلفة.
تختلف الجلسات منطقيًا وفيزيائيًا عن جلسات قاعدة بيانات أوراكل المستخدمة لمعالجة طلبات الصفحات. يُشغّل المستخدم تطبيقًا في جلسة APEX واحدة من تسجيل الدخول إلى تسجيل الخروج، بمدة نموذجية تُقاس بالدقائق أو الساعات. كل صفحة مطلوبة خلال تلك الجلسة تُؤدي إلى قيام مُحرّك APEX بإنشاء جلسة قاعدة بيانات أوراكل أو إعادة استخدامها للوصول إلى مواردها. غالبًا ما تستغرق جلسات قواعد البيانات هذه جزءًا من الثانية فقط.