переопределить синхронизацию с магистралью, добавить URL-адрес со строкой запроса?

У меня возникли проблемы с добавлением токена к строке запроса магистрального URL-адреса, и я надеюсь, что вы, ребята, сможете мне помочь. Три вещи, которые нужно знать:

  • Существует остаточный API, который ожидает токен с каждым запросом.
  • Серверная часть nginx, выполняющая аутентификацию, обслуживает магистральное приложение + запрос прокси к API в /api
  • Я новое для javascript + магистраль :/

Приложение магистрали фактически считывает токен из файла cookie, и мне нужно добавлять его к URL-адресу запроса каждый раз, когда магистраль делает вызов. Я вижу, что это можно сделать, переопределив магистральную синхронизацию. но это беспокоит меня в нескольких разных вещах. например, это то, что я делаю

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

model.url возвращал функцию, когда это не метод «чтения», и я не знал, как с этим справиться, а другая проблема заключается в том, что когда делается последовательный запрос, токен добавлено дважды. Я попытался удалить его с помощью этого материала indexOf, но безуспешно.

Есть ли лучший способ сделать это?

9
задан dineshbhoopathy 7 May 2012 в 13:11
поделиться