backbone-sync überschreiben, fügen Sie die url mit query-string?

Habe ich einige Probleme, gefolgt von einem token, das Rückgrat url-query-string und hoffe, Euch mir helfen könnte, hier draußen. Drei Dinge, die Sie wissen,

  • Gibt es eine rest-api, die erwartet, dass ein token bei jedem request
  • Ein nginx backend, das tut auth, dient das Rückgrat app + - proxy-req an die api unter /api
  • ich bin eine neue javascript - + - backbone :/

Backbone-app tatsächlich liest das token aus einem cookie und ich muss anfügen, diese auf die Anfrage-url jedes mal Rückgrat macht einen Anruf. Ich sehe dies getan werden kann, durch die übergeordneten backbone-sync. aber es beunruhigt mich in ein paar verschiedene Dinge. wie, das ist, was ich tun

console.log('overriding backbone sync');
var key ="token";
Backbone.old_sync = Backbone.sync
Backbone.sync = function(method, model, options) {
    if (method === 'read') {
        if (!(model.url.indexOf('?key=') != -1)) {
            model.url = model.url + '?key=' + key;
        }
    } else {
        old_url = model.url();
        if (!(old_url.indexOf('?key=') != -1)) {
            model.url = function() {
                return old_url + '?key=' + key;
            }
        }
    }
    Backbone.old_sync(method, model, options);
};

Modell.url wurde wieder eine Funktion, wenn Ihr nicht einen "read" - Methode und wusste nicht, wie man es gut behandelt und das andere Problem ist, wenn eine aufeinander folgende Anfrage gestellt wird, wird das token wird zweimal Hinzugefügt. Ich habe versucht, es zu entfernen, mit diesem indexOf Sachen mit kein Glück.

Gibt es einen besseren Weg, dies zu tun ?

Schreibe einen Kommentar