$ resources中的标头未更新

时间:2015-05-12 16:03:54

标签: javascript angularjs

我正在尝试发送一个标头,每个HTTP用于ngResource(在这种情况下为auth令牌)

这有些工作:

app.factory('User', ['$resource','$window',
  function($resource,$window,liftHost, liftBasePath) {

     return $resource('/api/users/:id',{},{ 
      get: {
               method: 'GET',
               headers: {'token': $window.sessionStorage.token}
          }

     });
  }]);

此代码的问题在于,在第一次调用之后,每个GET请求将具有相同的标头值。它没有得到重新评估。因此,如果用户注销,然后重新登录,则会更改 $ window.sessionStorage.token 的值,但请求将使用令牌的先前值发送。

我创建了一个带有$ httpBackend模拟的小型弹药来说明它。

请参阅:http://plnkr.co/edit/xYZM6wlDJ6CH2BPHLZAC?p=preview

1 个答案:

答案 0 :(得分:0)

以下是Plunker,其中包含此工作

我介绍了一个注入User和Session服务的TokenService。这比取决于$ window服务要简洁一些。此外,我将令牌设为对象而不是原始字符串。这允许令牌通过引用而不是值传递。

app.factory('Token', [
  function() {
    return {
      value: "a"
    }
  }
]);