كيف يمكن ل Callback Ajax يدرك أن جلسة مصادقة للمستخدم قد انتهت مهلة؟

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

سؤال

أنا أستخدم Django و JQuery لتنفيذ جلسات مصادقة وطلبات AJAX.

لقد قمت بتوثيق مهلة الجلسة لتوجيه تسجيل المستخدمين الذين يتعرضون للمصادقة بعد فترة طويلة من عدم النشاط على موقعي. بعض الصفحات الموجودة على موقعي لديها الكثير من يدعو AJAX لهم والتي تتطلب أن يكون المستخدم في جلسة مصادقة. عندما يترك المستخدم هذه الصفحة مفتوحة لفترة طويلة ولديه جلسة مهلة تلقائية، فإن أي مكالمات AJAX التي تم إجراؤها ستفشل فقط وإظهار خطأ في المتصفح. إرجاع مكدس الويب الخاص بي (Django) إعادة توجيه لتسجيل الدخول لهذه طلبات AJAX، لكنها تظهر فقط كأخطاء إلى $ .ajax () (باستخدام JQuery.)

كيف يمكنني إعادة تحميل الصفحة وإرسال المستخدم إلى صفحة تسجيل الدخول من خلال طلب AJAX عندما أجد أن جلسة المصادقة قد انتهت مهلة؟

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

المحلول

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

خيار آخر هو أن يكون complete وظيفة $.ajax() تحقق من رمز حالة HTTP على كائن XMLHTPRequest الذي تم تمريره في:

$.ajax({..., complete = function(xhr, textStatus){
    if(xhr.status > 300 && xhr.status < 400) //you got a redirect
        window.location.href = '/login/';
    ...
    }, ...);

نصائح أخرى

بسيطة حقا، لديك أي برنامج نصي أنت تسليم إرجاع نوع من رمز الخطأ، وربما

{'error', 'notloggedin'}

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

window.location.href = '/login/';

لجعل JavaScript إعادة توجيه إلى صفحة تسجيل الدخول (تغيير المسار حسب الضرورة)

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