Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.12.2013, 14:26
Новичок на форуме
Отправить личное сообщение для aphex Посмотреть профиль Найти все сообщения от aphex
 
Регистрация: 03.12.2013
Сообщений: 1

После добавления localstorage в backbone модель, POST запрос ничего не возвращает
Добрый день! Изучаю связку бекбон+jquerymobile, на сервере использую джанго рест фреймворк. Возникла следующая проблема:

1. [код без комментариев] Когда я отправляю на сервер связку логин/пароль в ответ от сервера получаю токен в формате { token: "<mytoken>" }. Я могу его просмотреть запустив console.log(response.token)

2. Далее мне нужно этот токен сохранить в localstorage, чтобы потом передать в хедер (с пом. переопределенного backbone.sync)

3. [код с комментариями] Я добавил в модель localstorage и во вью присваиваю в переменную access_token. Теперь когда я отправляю мои логин/пароль, токен не возвращается а console.log(response.token) возвращает undefined.

Что я делаю не так? Кто может объяснить почему после добавления localstorage я не получаю токен. Или как еще можно передавать в хедер полученный токен?

Моя модель:
var User = Backbone.Model.extend({
    defaults: {
        username: "",
        password: ""
    },

    url: appConfig.baseURL + "api-token-auth/",
    //localStorage: new Store('srt')
});

Кусок вью:
user.save({}, { 
    success: function(model, response) {
      if (typeof response.token === "undefined") {
        console.log('Token is undefined');
      } else {
        console.log('Token is exists');
        //localStorage.setItem('access_token', response.token);
        window.workspace.navigate('#', { trigger: true});
        return true;
    }},

    error: function(model, response) {
      var error = JSON.parse(response.responseText)
      console.log('Error: ' + error.detail);
    }

Переопределенный Backbone.sync:
Backbone._sync = Backbone.sync
Backbone.sync = function(method, model, options) {
    options = $.extend({
        crossDomain: true
        , xhrFields: {
            withCredentials: true
        }
        , beforeSend: function(xhr){
            xhr.setRequestHeader('Authorization', 'Token ' + localStorage.getItem('access_token'));
        }
    }, options);

    return Backbone._sync(method, model, options);
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск