RESTAdapter 初始化后添加标头

2023-12-05

我正在尝试添加一个Authorization适配器初始化和使用后,我的适配器请求的标头。我可以在创建时以静态方式添加标题ApplicationAdapter,但我似乎无法让它在后续 REST 调用中使用标头。我正在尝试这个:

var auth= "Basic " + hash;
App.ApplicationAdapter.reopen({
    headers: {
        Authorization: auth
    }
});

我已经调试过了RESTAdapter in the ajax方法,以及测试adapter.headers总是undefined.


接受的答案并没有解决推荐的方法在 ember-data 中不起作用的事实。我说推荐是因为:

https://github.com/emberjs/data/blob/master/packages/ember-data/lib/adapters/rest_adapter.js#L88

https://github.com/emberjs/data/blob/master/packages/ember-data/lib/adapters/rest_adapter.js#L162以及该文件中的其他位置。

此外,OP提出的未定义问题具体发生在这里:https://github.com/emberjs/data/blob/master/packages/ember-data/lib/adapters/rest_adapter.js#L619

所以,下面的方法根本行不通:

App.ApplicationAdapter.reopen({
  headers: {token: 'reopen_token (NO WORK)' }
});

我试图指出这是一个问题,但它在一小时内就关闭了:https://github.com/emberjs/data/issues/1820

希望核心能够决定修复此问题或删除评论。但是,是的,现在看来你必须劫持 jQuery ajax 设置,Ember.$.ajaxPrefilter,或者覆盖ajax自己在适配器上。

EDIT:因此,在从 Ember 开发者那里得到更多反馈后,看来这个问题的核心是试图重新打开一个已经创建的实例。因此,在定义时使用计算机控制的属性(因此它将根据需要更新)似乎是建议的方法。希望有所帮助(最近合并的拉取请求使这一点在引用文件的注释中更加明显:https://github.com/emberjs/data/pull/1818/files#diff-1d7f5a5b77898df15de501c3c38d4829R108 )

EDIT 2:在我的应用程序中得到了这个工作,所以这里是代码,以防其他人陷入困境:

//app.js
App.ApplicationAdapter = DS.ActiveModelAdapter.extend({
  namespace: 'api/v1',
  headers: function() {
    return {
      token: this.get('App.authToken') || localStorage.getItem('token')
    };
  }.property("App.authToken")
});

//login-controller.js (only action shown..assume `data` has user/pass)
  actions: {
    login: function() {
        $.post('/token/', data).done(function(user) {
          App.set('authToken', user.token);
          //Above will trigger adapters's header computed property to update

          // Transition to previous attempted route
          var attemptedTransition = self.get('attemptedTransition');
          if(attemptedTransition) {
            attemptedTransition.retry();
          }
          else {
            self.transitionToRoute('yourapproute');
          }
        })
        .fail(function(response) { 
          //fail handling omitted
        });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RESTAdapter 初始化后添加标头 的相关文章

随机推荐

  • td 中的多行

    Stores td 包含多行表 一个商店可以有多个 商店 行 参见示例 https jsfiddle net ak3wtkak 1 商店宽度和数量 th 第二个表中的多行列应相同 如何解决这个问题或者什么是替代方法 table border
  • 处理带有 Promise 的对象数组

    我正在尝试制作一个 Node Express 应用程序 在其中从不同的 url 获取数据 调用 node fetch 来提取某些页面的正文以及有关某些 url 端点的其他信息 然后我想渲染一个 html 表格来通过信息数组显示这些数据 我在
  • LINQ 中的更新查询包含 WHERE 子句中的所有列,而不仅仅是主键列

    我正在使用 Linq 更新表中的单个列 请使用下面的虚构表格 MyTable PKID ColumnToUpdate SomeRandomColumn var row from x in DataContext MyTable where
  • Android studio 在真实设备上运行应用程序后添加了不需要的权限

    在设备上运行应用程序后 应用程序需要清单文件中未提及的不需要的位置权限 当我从我的朋友 Android studio 运行相同的代码时 它运行正常 不需要额外的许可 清单文件
  • 更简洁的最大/最小版本,没有块

    我通常这样做 abc defg max a b a length lt gt b length 但这似乎需要大量额外的输入来比较两个对象上相同方法的结果 有没有更简洁的方法来做类似的事情 abc defg max length 哪个会在每个
  • 嵌套选择器 - 可能吗?

    假设我有一个div里面有一堆东西 div ul ul div class Component div div
  • Tensorflow:我的准确性出现问题

    我只是运行一个简单的代码 并希望在训练后获得准确性 我加载了保存的模型 但是当我想要获得准确性时 却出现了问题 为什么 coding utf 8 from color 1 import read and decode get batch g
  • 从代码中将方向设置为纵向

    我知道我可以限制清单文件的方向 像这样 android screenOrientation portrait 但是可以通过代码设置方向吗 例如 可以通过清单和代码将活动设置为全屏this getWindow setFlags WindowM
  • 动态添加项目到 JComboBox

    Vector comboBoxItems new Vector DefaultComboBoxModel model ComboBox Items have gotten from Data Base initially model new
  • Java中Set和SortedSet接口之间的逻辑不一致[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我注意到 Java 中的
  • 使用pivot_longer将水平格式重塑为长格式

    我正在尝试使用之前提供的相同代码将数据重塑为长格式而不是宽格式link但多次尝试修改后还是不行names pattern pre post 我的数据样本是 data1 lt read table text Serial ID pre EDV
  • 每次调用 NSMutableArray 的 count 方法时,它实际上都会对项目进行计数吗?

    由于可可设计模式 实例方法的名称count in NSMutableArray是不明确的 它可以返回一个保存的变量count 或者它可以在每次调用时计算数组中的项目 然后返回该值 cocoa 规定一个方法只返回变量的值foo be foo
  • 使用Azure ARM模板通过Sql Filter创建服务总线主题订阅?

    我已经能够弄清楚如何设置一个 Azure ARM 模板来创建 管理 Azure 服务总线命名空间 主题和订阅以接收所有消息 然而 关于 ARM Tempates 的 Microsoft 文档仍然非常缺乏 我无法弄清楚如何在模板中为订阅定义
  • 模板方法的未定义参考错误[重复]

    这个问题在这里已经有答案了 在过去的一个半小时里 这让我发疯 我知道这是一件小事 但找不到问题所在 当然 周五下午下着雨 这一事实也无济于事 我定义了以下类 它将保存从文件中读取的配置参数 并让我从程序中访问它们 class VAConfi
  • 斯威夫特继续不工作?

    我的 Swift segue 根本不起作用 也没有抛出任何错误 断点向我显示应用程序降落在这一行 但没有任何反应 self performSegueWithIdentifier SignupSegue sender self 该代码块是 F
  • 将参数传递给 dplyr summarise 函数

    我正在尝试使用 dplyr 中的汇总函数来使用两个参数函数来计算摘要统计信息 该函数从连接的数据库传递表和字段名称 不幸的是 一旦我用另一个函数包装汇总函数 结果就不正确 端表是一个不会迭代每一行的数据框 我将在下面显示输入 输出 汇总统计
  • 从 Lasagne(Python 深度神经网络框架)获取输出

    我从 Lasagne 的官方 github 加载了 mnist conv py 示例 在此 我想预测一下我自己的例子 我看到 lasagne layers get output 应该处理官方文档中的 numpy 数组 但它不起作用 我不知道
  • 如何在不指定缩放级别(或 LevelOfDetails)的情况下获取图块计数、图块 X、图块 Y 详细信息?

    这是参考 Google Tile 地图或 Bing 地图 是否可以在不通过任何类型的内部计算指定缩放级别 或 LevelOfDetails 的情况下获取图块计数 图块 X 图块 Y 详细信息 客户只需提供坐标 P1 和 P2 并要求提供图块
  • 无法读取 null 的属性“getSheetByName”

    function sortResponses var Sheets SpreadsheetApp getActiveSpreadsheet getSheetByName Fall 01 sheet sort 3 false 我有一张名为Fa
  • RESTAdapter 初始化后添加标头

    我正在尝试添加一个Authorization适配器初始化和使用后 我的适配器请求的标头 我可以在创建时以静态方式添加标题ApplicationAdapter 但我似乎无法让它在后续 REST 调用中使用标头 我正在尝试这个 var auth