2016-06-28 6 views
1

У меня есть простой Interceptor в угловом, который перехватывает запросы и добавляет заголовок авторизации. Он также перехватывает ошибку ответа 401, чтобы узнать, не провалился ли запрос из-за авторизации.

К сожалению, кажется, что он беспорядок с $ resource, потому что мои вызовы $ resource ALWAYS возвращают обратный вызов успеха и никогда не являются ошибкой (будь то 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 к вашему заводу-перехватчику. как так

$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