ユーザー固有のデータセットを使用して Sencha Touch 2 アプリケーションを構築しています。
アプリのアーキテクチャ:
Sencha Touch アプリ <=====> REST サービスを使用した Java サーバー バックエンド (多数の AJAX リクエスト =) )
私が実際に持っているものは次のとおりです。
- ユーザー名/パスワードを使用してユーザーにログインします
アプリが初期化され、ログインフォームが機能します。フォームを AJAX リクエストとして送信した後、サーバー バックエンドはユーザーデータをチェックし、クライアント コールバック関数を呼び出します。
そして、私がやりたいことは次のとおりです。
- コールバック関数は
- sessiontoken を使用して Cookie を作成するか、
- sessiontoken を localstorage ( http://docs.sencha.com/touch/2-0/#!/api/Ext.data.proxy.LocalStorage )に保存するか、
- sessiontoken を js 変数内に格納します
わかりました、問題にはなりません。
しかし、どうすれば次のことを達成できますか:
ほとんどのデータは1 人のユーザーに固有であり、必要に応じて (ナビゲーションをクリックするなどして) REST サービスによって返される必要があります。すべてのAJAXリクエスト内でセッショントークン(上記を参照)を送信するにはどうすればよいですか-サーバーは適切なデータセットを提供できます(トークンが有効であると仮定)?
AJAX リクエスト内で Cookie を送信する
URLが同じスペースにある場合、Cookieがリクエストに自動的に追加されることをすでに読みましたよね?Java サーバーは同じドメイン (localhost:8080) にありますが、「app.json」などの URL に対する要求ではなく、Cookie を使用できません。クロスドメインリクエストは本当にドメイン固有のものだと思いましたか?
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);
}
});
})();
エラー:
キャッチされないエラー: [エラー][Ext.data.Connection#request] URL が指定されていません
リスナーも追加しようとしました
Ext.Ajax.add({
listeners : {
beforerequest : function( conn, options, eOpts ){
alert("Do sth... like add params");
}
}
});
エラー:
キャッチされていない TypeError: オブジェクト [オブジェクト オブジェクト] にメソッド 'add' がありません
トークンを追加する方法について何か考えはありますか?
または、これらのケースを処理するより良い方法はありますか?
ありがとう!