如何在每个JsonP请求中发送用户令牌

How to send user token with every JsonP request?

本文关键字:用户 令牌 请求 JsonP      更新时间:2023-09-26

在我的sencha touch 2.1中,成功登录后,从服务发送回一个令牌,该令牌必须存储并用于所有未来的服务调用。由于我正在处理远程web服务,因此所有商店都使用JsonP代理来获取数据,这就是为什么我要将令牌添加到所有此类调用的原因。由于JsonP不支持标头,我计划将此令牌添加为url参数,但我不确定如何为来自应用程序的所有JsonP调用做到这一点。

在AJAX调用中发现了类似的问题
在每个AJAX请求(Sencha Touch 2)中发送用户详细信息(会话令牌)

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

是否有其他事件我可以监听/拦截添加此url参数?是否有一种方法来编写具有此功能的基代理类?如果你知道怎么做,请分享一些例子。

好了,我找到了一个适合我的方法。

我扩展了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;
  }
});

如果你知道其他更好的方法请分享。