如何使用每个JsonP请求发送用户令牌?

时间:2013-01-15 10:39:52

标签: javascript extjs sencha-touch sencha-touch-2 jsonp

在我的sencha touch 2.1中,成功登录后,将从服务中发回令牌,该令牌必须存储并与将来的所有服务呼叫一起使用。由于我正在处理远程Web服务,因此所有商店都使用JsonP代理来获取数据,这就是我想将令牌添加到所有此类调用的原因。由于JsonP不支持头文件,我打算将此令牌添加为url param,但我不知道如何对源自app的所有JsonP调用执行此操作。

发现了类似的AJAX调用问题 Send user details (session token) within every AJAX requests (Sencha Touch 2)

但由于JsonP不支持'beforerequest'事件和标题,我被卡住了。

是否还有其他可以收听/拦截的事件来添加此网址参数?有没有办法编写具有此功能的基本代理类?如果您知道如何操作,请分享一些示例。

1 个答案:

答案 0 :(得分:0)

好的,我发现了一种对我有用的方式。

我扩展了JsonP代理,并在buildUrl方法中添加了缓存的令牌,现在我在所有商店中都使用了这个代理。这是代码:

Ext.define('myshop.proxy.CustomJsonpProxy', {
  extend: 'Ext.data.proxy.JsonP',
  alias: 'proxy.customjsonpproxy',
  buildUrl: function(request) {
    var me      = this,
        url     = me.callParent(arguments);
    if(!Ext.isEmpty(loggedInUserToken)){
        url = Ext.urlAppend(url, "token="+loggedInUserToken);
    }
    return url;
  }
});

如果您了解其他更好的方法,请分享。