无法在$ resource标头中添加持票人令牌

时间:2016-12-10 20:02:55

标签: angularjs angular-resource angular-http

我无法在$ resource服务标头中添加承载令牌以进行基于令牌的身份验证。我使用了以下代码

工厂

return $resource(appSettings.serverPath + "/api/product/:id", null, {
            'get': {
                method: 'GET',
                headers: {
                    'Authorization': 'Bearer ' + currentUser.getProfile().token
                }
            }

此外,我根据app.run中的一些研究尝试了下面的代码

 $http.defaults.headers.common.Authorization = 'Bearer ' + currentUser.getProfile().token;

但是这两个选项都没有在我的请求中添加此标头,我可以在没有此标头的情况下看到Chrome中的请求,因此得到了未经授权的响应。我使用棱角1.5.9。对此有任何线索。

1 个答案:

答案 0 :(得分:1)

假设currentUser是服务而currentUser.getProfile()是同步API:

app.factory("myRestAPI", function(currentUser) {
    return $resource(appSettings.serverPath + "/api/product/:id", null, {
        'get': {
            method: 'GET',
            headers: {
                //REPLACE expression
                //'Authorization': 'Bearer ' + currentUser.getProfile().token
                //WITH a function
                'Authorization': 
                      function() {
                          return 'Bearer ' + currentUser.getProfile().token;
                      }
            }
        }
    );
});

通过使用函数而不是表达式,将在每次调用时计算Authorization标头。

来自文档: 1

  
      
  • headers - {Object} - 返回表示要发送到服务器的HTTP头的字符串的字符串或函数的映射。如果函数的返回值为null,则不会发送标头。函数接受配置对象作为参数。
  •