1

我正在尝试为 JWT 处理 auth-0 角度插件,但我被困在一个地方,我设置了 jwtInterceptor 以将 JWT 令牌推送到每个请求的标头中。

这是我的代码:

// Send JWT with every request
  jwtInterceptorProvider.tokenGetter = ['config', function(config) {
    var user = JSON.parse(localStorage.getItem('ngStorage-user'));
    var token = user.token;
    return token;
  }];

  $httpProvider.interceptors.push('jwtInterceptor');

问题在于,在某些情况下,我需要在不发送请求标头中的令牌的情况下进行调用,例如在注册时获取初始 JWT 令牌。截至目前,使用我的代码,如果没有设置 JWT,则会导致错误。

我的另一个想法是只编辑每个调用以手动发送标头中的令牌,但是我似乎无法让请求与 ngResource 一起使用:

function getCourseCatalog(token) {
      return Registrar.checkToken($localStorage.user.token).then(function(data) {
               return $resource($rootScope.APIBaseURL + 'catalog',{
                  query: {
                    method: 'GET',
                    isArray: true,
                    headers: {
                      Authorization: 'Bearer ' + $localStorage.user.token
                    }
                  }
                });
             });
    }

^ 使用此函数,调用永远不会进行,我很确定这正是您应该设置 $resource 调用的方式。有什么我想念的吗?这个特定的调用正在访问一个获取对象数组的端点。

4

1 回答 1

1

事实证明,该函数缺少一个参数,但此外,我仍然需要在 $resource 上运行 query() 函数才能实际进行调用。新函数如下所示:

function getCourseCatalog(token) {
      return Registrar.checkToken($localStorage.user.token).then(function(data) {
               return $resource($rootScope.APIBaseURL + 'catalog',{},{
                  query: {
                    method: 'GET',
                    isArray: true,
                    headers: {
                      Authorization: 'Bearer ' + $localStorage.user.token
                    }
                  }
                }).query();
             });
    }
于 2016-02-25T01:46:29.003 回答