Отправка сведений о пользователе (токен сеанса )в каждом запросе AJAX (Sencha Touch 2)

Я создаю приложение Sencha Touch 2 с пользовательскими наборами данных.

Архитектура приложения:

Приложение Sencha Touch Серверная часть Java Server со службами REST (много запросов AJAX =))

На самом деле у меня есть:

  • Войдите в систему с помощью имени пользователя/пароля

    The app gets initialized and the loginform comes into play. After submitting the form as a AJAX request, the server backend checks the userdata and calls the client callback function.

И то, что я хочу сделать, это:

  • Функция обратного вызова должна
    1. создайте файл cookie с маркером сеанса или
    2. сохранить сеансовый токен в локальном хранилище(http://docs.sencha.com/touch/2-0/#!/api/Ext.data.proxy.LocalStorage)или
    3. сохранить сеансовый токен в переменной js

Ладно, не должно быть проблем.

Но как я могу добиться следующего:

Большая часть данных специфична для одного пользователя и должна быть возвращена службой REST при необходимости (путем нажатия на навигацию,... ).Как я могу отправить сеансовый токен (, см. выше ), в каждом запросе AJAX -, чтобы сервер мог предоставить подходящие наборы данных (, предполагая, что токен действителен )?

Отправлять файлы cookie в запросах AJAX

Я уже читал, что файлы cookie автоматически добавляются в запрос, если URL-адрес находится в том же месте, верно? Сервер Java находится в том же домене (localhost :8080 ), но файлы cookie недоступны -вместо запросов по URL-адресам, таким как «app.json». Я думал, что междоменные запросы --действительно зависят от домена?

Отправлять параметры в запросах AJAX

Поскольку файлы cookie не являются avi, я подумал о возможности «вручную» добавлять параметры к запросам ajax. Приложение будет содержать много запросов AJAX, и поэтому я не хочу добавлять токен вручную -Я пытался переопределить функцию запросов Ext.Ajax , но мне это не удалось;-(:

(function() {
    var originalRequest = Ext.data.Connection.prototype.request;

    Ext.override(Ext.data.Connection, {
        request : function(options) {
            alert("Do sth... like add params");
            return originalRequest.apply(this, options);
        }
    });
})();

ОШИБКА:

Uncaught Error: [ERROR][Ext.data.Connection#request] No URL specified

Я также пытался добавить слушателя

Ext.Ajax.add({
    listeners : {
        beforerequest :  function( conn, options, eOpts ){
           alert("Do sth... like add params");
        }
     }
});

ОШИБКА:

Uncaught TypeError: Object [object Object] has no method 'add'

Любая идея о том, как я могу добавить токен?

Или какой-нибудь лучший способ справиться с этим случаем?

Спасибо!

5
задан Evan Trimboli 17 August 2012 в 10:35
поделиться