2015-05-12 18 views
0

我试图发送一个报头,每个HTTP的ngResource(在这种情况下,身份验证令牌)

这somewhats作品:

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 mock创建了一个小笨蛋来说明它。

看到:http://plnkr.co/edit/xYZM6wlDJ6CH2BPHLZAC?p=preview

回答

0

这里是一个Plunker这个工作

我介绍了一个被注入用户和会话服务TokenService。这比取决于$ window服务要清洁一点。另外,我将令牌作为对象而不是原始字符串。这允许令牌通过引用传递而不是值。

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