Frage

Ich benutze das Backbone.js Paginator Plugin.Es macht die unendliche Scroll-Paginierung gut, indem es eine eigene Sammlung für die an der Paginierung beteiligten Modelle definiert.Wenn der Benutzer angemeldet ist, gibt das PHP-Backend das Backbone-Objekt mit einem zusätzlichen Attribut zurück is_liked um zu bewirken, dass dieses Element ein anderes CSS-Styling hat.

Problem:Wenn das Paginator-Plugin (mit einer eigenen Sammlung) Backbone.Paginator.requestPager) bekommt ein fetch anfrage im Backend, das Backend kann nicht feststellen, ob der Benutzer angemeldet ist!Wenn ich jedoch das Übliche benutze Backbone.Collection, kann das Backend feststellen, ob der Benutzer angemeldet ist!Es funktioniert mit einem $.post() zu.Das lässt mich denken, dass das Problem in den Plugins liegt Backbone.Paginator.requestPager

Ich überprüfe die Ergebnisse mithilfe des Netzwerkbereichs der Entwicklertools von Chrome.Wenn die Authentifizierungsprüfung funktioniert, api/test kann gesehen werden, um einige Daten über den Benutzer zurückzugeben.Wenn der Anmeldestatus nicht ermittelt werden kann, wird null zurückgegeben

UPDATE: Der GET anfrage gesendet von Backbone.Paginator.requestPager sammlung enthält nicht die Cookie informationen in den Kopfzeilen, die in der gefunden werden GET anfrage gesendet von Backbone.Collection.Könnte das das Problem sein?Wie kann ich zwingen Backbone.Paginator.requestPager um die Cookie-Daten nicht aus den Headern zu entfernen?

Was passiert hier?Und wie kann ich das lösen (ohne meinen eigenen Paginierungscode neu zu schreiben)?

Authentifizierungstest mit 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());  
});

Typische Backbone-Sammlung [Werke]

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

Paginators Sammlung [funktioniert nicht]

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;
    }

});
War es hilfreich?

Lösung

Dies ist ein domänenübergreifendes Problem:

Eine Anfrage geht an diese URL:http://www.mysite.com/api/test?page=1

Und der andere dazu:http://mysite.com/api/test

Für die Browser www.mysite.com ist völlig anders, also wenn der Cookie am generiert wird www.mysite.com anfragen an mysite.com wird es nicht enthalten.Stellen Sie sicher, dass beide Anfragen an dieselbe Domain gehen und Sie kein Cookie-Problem haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top