Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js在RESTAdapter头中动态设置REST身份验证令牌_Ember.js_Ember Data - Fatal编程技术网

Ember.js在RESTAdapter头中动态设置REST身份验证令牌

Ember.js在RESTAdapter头中动态设置REST身份验证令牌,ember.js,ember-data,Ember.js,Ember Data,这篇文章()是我编写代码的指南: 我的授权REST成功返回令牌。我直接使用AJAX,而不是通过ember数据,因为这只是登录和获取授权令牌(embercast指南) 这是Chrome网络信息和登录后受保护的主页。将打印授权令牌。(这只是我的余烬应用程序学习和测试) 正如您在AJAX代码中所看到的,这里是每次用户登录时将auth令牌动态放入RESTAdapter头中的属性设置 App.set('authToken', response.token); 这是RESTAdapter代码: App

这篇文章()是我编写代码的指南:

我的授权REST成功返回令牌。我直接使用AJAX,而不是通过ember数据,因为这只是登录和获取授权令牌(embercast指南)

这是Chrome网络信息和登录后受保护的主页。将打印授权令牌。(这只是我的余烬应用程序学习和测试

正如您在AJAX代码中所看到的,这里是每次用户登录时将auth令牌动态放入RESTAdapter头中的属性设置

App.set('authToken', response.token); 
这是RESTAdapter代码:

App.ApplicationAdapter = DS.RESTAdapter.extend({
   namespace: 'emberauthslimv3/api',

   headers: {
      'AUTH-TOKEN': function() {
         return {
           token : this.get('App.authToken') || localStorage.getItem('token')
         }
       }.property('App.authToken')
   }
});
我已经尝试了各种组合的头设置,相信我,我这样做了大约2天了,从来没有成功地把令牌放入头中

当我查看chrome网络信息时,我得到的标题是

AUTH-TOKEN:[object Object]

感谢您的帮助/指点:D

更新

在测试了各种组合后仍然失败,我放弃了,只使用了最简单的hack,ajaxler哈哈。至少它是有效的:

      if (response.success) {
        Ember.$.ajaxPrefilter(function( options, oriOptions, jqXHR ) {
          jqXHR.setRequestHeader("AUTH-TOKEN", response.token);
        });

        self.transitionToRoute('/');
      }

首先,当你有余烬文档的时候,你有一个错误的参考链接。问题是ApplicationAdapter中的头实现。您将返回具有每个标头属性的对象

App.ApplicationAdapter = DS.RESTAdapter.extend({
  headers: function() {
    return {
      "AUTH-TOKEN": Ember.get('App.authToken') || localStorage.getItem('token')
    };
  }.property().volatile()
});

顺便说一句,这里是链接

首先,当您有此的余烬文档时,您使用了一个错误的参考链接。问题是ApplicationAdapter中的头实现。您将返回具有每个标头属性的对象

App.ApplicationAdapter = DS.RESTAdapter.extend({
  headers: function() {
    return {
      "AUTH-TOKEN": Ember.get('App.authToken') || localStorage.getItem('token')
    };
  }.property().volatile()
});

顺便说一句,这里是链接

使用您的答案,AUTH-TOKEN甚至没有插入到标题中。使用更新的答案,标题中有AUTH-TOKEN,但内容仍然相同:AUTH-TOKEN:[对象对象]我放弃哈哈,所以现在我只使用余烬。$.ajaxPrefilter()。我在这里实现了它,它工作正常,但我发现了一个问题..如果我实现了一个特定的模型适配器作为rest,并且没有传递头信息,因为实现了ApplicationAdapter(使用这些信息),那么模型rest调用没有这些头…我注意到您使用的是ember cli,酷:D.我自己刚开始使用它,将在Restadapter中重试动态标题设置使用您的答案,AUTH-TOKEN甚至没有插入标题。使用您更新的答案,标题中有AUTH-TOKEN,但内容仍然相同:AUTH-TOKEN:[对象对象]我放弃了哈哈,现在我只使用余烬。$.ajaxPrefilter()。我在这里实现了它,它工作正常,但我发现了一个问题..如果我实现了一个特定的模型适配器作为rest,并且没有传递头信息,因为实现了ApplicationAdapter(使用这些信息),那么模型rest调用没有这些头…我注意到您使用的是ember cli,酷:D。我自己刚开始使用它,将在RestaAdapter中再次尝试动态标题设置