لا يمكن اكتشاف ما إذا كان المستخدم قد قام بتسجيل الدخول عند استخدام Paginator (backbone.js)

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

سؤال

أنا أستخدم Backbone.js مصفح الصفحات توصيل في.إنه يقوم بتمرير صفحات لا نهائية بشكل جيد من خلال تحديد مجموعته الخاصة للنماذج المشاركة في ترقيم الصفحات.إذا قام المستخدم بتسجيل الدخول، فسوف تقوم الواجهة الخلفية لـ PHP بإرجاع كائن العمود الفقري مع سمة إضافية is_liked لجعل هذا العنصر له نمط CSS مختلف.

مشكلة:عندما يكون البرنامج المساعد Paginator (مع مجموعة خاصة به). Backbone.Paginator.requestPager) يقوم بإجراء GET fetch الطلب على الواجهة الخلفية، الواجهة الخلفية غير قادرة على تحديد ما إذا كان المستخدم قد قام بتسجيل الدخول!ومع ذلك، عندما أستخدم المعتاد Backbone.Collection, ، الواجهة الخلفية قادرة على تحديد ما إذا كان المستخدم قد قام بتسجيل الدخول أم لا!يعمل مع أ $.post() أيضاً.هذا يجعلني أعتقد أن المشكلة تكمن في البرنامج المساعد Backbone.Paginator.requestPager

أقوم بالتحقق من النتائج باستخدام قسم الشبكة في أدوات مطوري Chrome.إذا كان التحقق من المصادقة يعمل، api/test يمكن رؤيته لإرجاع بعض البيانات حول المستخدم.إذا تعذر تحديد حالة تسجيل الدخول، فسيتم إرجاعها فارغة

تحديث: ال GET الطلب المرسل بواسطة Backbone.Paginator.requestPager المجموعة لا تشمل Cookie المعلومات في الرؤوس الموجودة في GET الطلب المرسل بواسطة Backbone.Collection.هل يمكن أن تكون هذه هي المشكلة؟كيف يمكنني القوة Backbone.Paginator.requestPager لعدم تجريد بيانات ملفات تعريف الارتباط من الرؤوس؟

ماذا يحصل هنا؟وكيف يمكنني حل هذه المشكلة (دون إعادة كتابة رمز ترقيم الصفحات الخاص بي)؟

اختبار المصادقة باستخدام PHP Backend (Laravel Framework)

Route::any('api/test', function() {
    // This will return some data of the user if logged in
    return json_encode(Auth::user());  
});

مجموعة العمود الفقري النموذجية [الأعمال]

SimilarUserCollection = Backbone.Collection.extend({
    model: User,
    url: 'api/test'
});

مجموعة Paginator [لا تعمل]

PhotoCollection = Backbone.Paginator.requestPager.extend({
    model: Photo,

    paginator_core: {
            type: 'GET',
            dataType: 'json',
            url: 'api/test'
        },

    paginator_ui: {
        firstPage: 1,
        currentPage: 1,
        perPage: 7,
        totalPages: 10
    },

    server_api: {

        'page': function() { return this.currentPage; }
    },

    parse: function (response) {

        return response;
    }

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

المحلول

هذه مشكلة عابرة للمجالات:

طلب واحد موجه إلى عنوان URL هذا:http://www.mysite.com/api/test?page=1

والآخر على هذا:http://mysite.com/api/test

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

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