我试图在用户注册到Ember数据请求标题后设置从响应中收到的身份验证令牌。
这是我的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值,但由于某种原因,此值不会设置为reqest标头令牌密钥。
令牌未更新到标题,只有在页面刷新后才会将新更新的令牌发送到服务器。
任何关于我可能做错的想法,任何提示将不胜感激。 感谢
答案 0 :(得分:1)
localStorage
不是可观察的Ember对象,因此您的property("localStorage.token")
只会被评估一次。相反,每次都要对它进行重新评估:
headers: function() {
return {
"token":localStorage.token,
};
}.property().volatile()