【问题标题】:How to send user token with every JsonP request?如何在每个 JsonP 请求中发送用户令牌?
【发布时间】:2012-12-29 10:40:41
【问题描述】:

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

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

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

我可以监听/拦截任何其他事件来添加此 url 参数吗?有没有办法编写具有此功能的基代理类?如果您知道如何执行此操作,请分享一些示例。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 2012-12-21
      • 2012-08-13
      • 1970-01-01
      • 2012-11-16
      • 2017-09-24
      • 1970-01-01
      相关资源
      最近更新 更多