2016-06-28 147 views
1

我有一个简单的角度拦截器拦截请求并添加授权标头。它还拦截响应错误401以知道请求是否因授权失败。

不幸的是它似乎与$资源混乱,因为我的$资源调用始终返回成功回调,并从来没有一个错误(无论是400或500)。

它确实是拦截器,因为如果我删除它,$ resource调用将返回正确的回调。

有关如何解决此行为的任何想法?

这里的拦截请求:

function request(config) { 
    var token = 'whatever-my-token-is'; 

    if (token) { 
     config.headers.authorization = token; 
    } 

    return config; 
    } 

而且responseError:

function responseError(response) { 
    if (response.status === 401) { 
    $rootScope.$broadcast('unauthorized'); 
    } 

    return response; 
} 

任何帮助表示赞赏

回答

0

我认为你需要使用一个承诺返回错误。
$q加入您的Interceptor工厂。 像这样

$provide.factory('MyHttpInterceptor', function ($q){ 
    ... 
}) 

,然后让responseError()

function responseError(response) { 
    if (response.status === 401) { 
    $rootScope.$broadcast('unauthorized'); 
    } 

return $q.reject(response); 
} 

这个环节也可能有助于https://djds4rce.wordpress.com/2013/08/13/understanding-angular-http-interceptors/

+0

这解决了问题,非常简单,非常感谢! – QuantumDream