【问题标题】:Ember JS set request headerEmber JS 设置请求头
【发布时间】:2015-10-31 08:24:21
【问题描述】:

我正在尝试将用户注册后从响应中收到的身份验证令牌设置为 Ember Data 请求标头。

这是我的 application.js 代码

import DS from 'ember-data';

export default DS.RESTAdapter.extend({

  namespace: 'merchant',
  host: 'http://192.168.1.173:3000',


  headers: function() {
    return {
      "token":localStorage.token,
    };

  }.property("localStorage.token","token")

});

在收到注册用户 API 调用的成功响应后,我正在尝试设置标头。

var register=this.store.createRecord('registermerchant',data);
  register.save().then(function(response){
    console.log(response.success);
    if(response.get('success')){


      self.set('token',response.get('token'));
      self.transitionToRoute('merchanthome')

    }

和

  tokenChanged: function() {

    localStorage.token=this.get('token');

    console.log(localStorage.token);

  }.observes('token'),

我可以看到更新后的 localStorage.token 值,但是由于某种原因,该值没有设置为请求标头令牌键。

令牌没有更新到标头,只有在刷新页面后,新更新的令牌才会发送到服务器。

任何关于我可能做错的想法,任何提示将不胜感激。 谢谢

【问题讨论】:

    标签: javascript ember.js ember-data ember-cli


    【解决方案1】:

    localStorage 不是可观察的 Ember 对象,因此您的 property("localStorage.token") 只会被评估一次。而是让每次都重新评估属性变得不稳定:

    headers: function() {
        return {
          "token":localStorage.token,
        };
    
      }.property().volatile()
    

    【讨论】:

    • 是的,我也想通了。谢谢不能投票回答,因为我没有 15 个代表。只是出于好奇,如何围绕 localStorage 对象构建 Ember Observable 对象?
    • 您可以将 localStorage 包装在您自己的对象中,并使用 getter 和 setter 委托调用。您需要使用 get 和 set 来访问它。对于可以存储任意数据的通用 ember-enabled localStorage,您需要使用 unknownProperty/setUnknownProperty。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    相关资源
    最近更新 更多