أفضل طريقة للتعامل مع مهلة الجلسة في تطبيقات الويب؟

StackOverflow https://stackoverflow.com/questions/114321

سؤال

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

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

كيف يمكنك التعامل مع هذا بطريقة سهلة الاستخدام؟

هل كانت مفيدة؟

المحلول

أبقِ الخادم على علم بحقيقة أن المستخدم يقوم بإدخال المعلومات بشكل نشط.على سبيل المثال، أرسل رسالة إلى الخادم إذا قام المستخدم بالضغط على المفتاح TAB أو بالنقر بالماوس على أحد الحقول.الحل النهائي متروك لك.

نصائح أخرى

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

ربما تكون أفضل نصيحة هي مطالبة المستخدمين بإغلاق نافذة المتصفح بمجرد الانتهاء من ذلك.باستخدام ملفات تعريف الارتباط الخاصة بالجلسة، ستنتهي الجلسة تلقائيًا عند إغلاق المتصفح أو بعد مرور 30 ​​دقيقة (يمكن تغييرها).

نظرًا لعدم وجود تفاعل افتراضيًا بين المتصفح والخادم بمجرد تحميل الصفحة، فسيتعين عليك الاتصال بخادم جافا سكريبت في الخلفية على صفحات النماذج لتحديث الجلسة، ولكن يبدو أن الأمر يمثل مشكلة كبيرة جدًا هذه مشكلة بسيطة.

إذا كانت مهلة الجلسة قصيرة جدًا بحيث لا يكون لدى المستخدم الوقت الكافي لملء نموذج، فسأضع برنامج AJAX النصي الذي يقدم طلب http إلى الخادم، كل بضع دقائق، لإبقاء الجلسة حية.سأفعل ذلك فقط على الصفحات التي يتعين على المستخدم ملؤها بشيء ما أو التي بدأت بالفعل في ملء شيء ما.

هناك حل آخر يتمثل في استخدام برنامج نصي للتذكير بمهلة الجلسة والذي يظهر مربع حوار منبثق لتذكير المستخدم بأن الجلسة على وشك الانتهاء.يجب أن تعرض النافذة المنبثقة "تسجيل الخروج" و"متابعة استخدام التطبيق" الذي يقدم طلب ajax لتحديث مهلة الجلسة.

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

هل فكرت في تقسيم النموذج إلى أجزاء أصغر؟

راقب المهلة وانشر نافذة منبثقة لإعلام المستخدم بأن جلسته الحالية ستنتهي وإظهار زري "موافق" أو "إلغاء".حسنًا، لمواصلة الجلسة (على سبيل المثال:أعد ضبط العداد إلى 5 دقائق أو 10 دقائق أخرى - كل ما تحتاجه) - أو - إلغاء للسماح للجلسة بمواصلة العد التنازلي إلى الصفر، وبالتالي تنتهي.
هذه واحدة من العديد من الطرق للتعامل معها.

يعد استخدام "سلسلة محادثات" JavaScript لإبقاء الجلسة مفتوحة فكرة سيئة بالنسبة لي.

إنها تتعارض مع فكرة انتهاء مهلة الجلسة الموجودة لتحرير بعض الموارد في حالة عدم وجود مستخدم أمام التطبيق.

أعتقد أنه يجب عليك ضبط مهلة الجلسة بوقت أكثر دقة، من أجل ملء النموذج في "الاستخدام العادي النموذجي".

يمكنك أيضًا أن تكون استباقيًا من خلال:

  1. وجود تنبيه JavaScript يعرض تحذيرًا غير تدخلي (وليس نافذة منبثقة) للمستخدم قبل انتهاء المهلة، والذي يشير إلى أن الجلسة ستنتهي قريبًا (ويعطي رابطًا لإرسال طلب ajax لإعادة تعيين المهلة وإزالة هذا التحذير - سيؤدي ذلك إلى تجنب فقدان المستخدم للنموذج الذي يكتبه حاليًا)،
  2. ولديك أيضًا "سلسلة رسائل" JavaScript ثانية، والتي، في حالة انتهاء صلاحية الجلسة، تعيد التوجيه إلى صفحة تسجيل الدخول برسالة تفيد بأن الجلسة قد انتهت صلاحيتها الآن.

ويعتقد أن هذا هو الأفضل لأنه يتجنب قيام المستخدم بملء نموذج معقد مقابل لا شيء، والتعامل مع الحالة عندما يغادر المستخدم.

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

أو ضع حقل كلمة المرور في النموذج.يعتمد على عدد النماذج التي يتعين عليهم ملؤها في الجلسة.

عندما يقوم المستخدم بنشر النموذج وانتهت الجلسة الخاصة به، يجب عليك التأكد من حفظ قيم النموذج في مكان ما ثم مطالبة المستخدم بتسجيل الدخول مرة أخرى.بمجرد إعادة مصادقتك، يمكنهم بعد ذلك إعادة إرسال النموذج (حيث لن يتم فقدان أي من بياناتهم).

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top