Предотвратить запуск запроса в AngularJS

Можно ли использовать угловые перехватчики, чтобы предотвратить запуск текущего запроса?

Например, у меня есть ui-grid, который отображает все заказы, и каждый заказ имеет ссылку Edit и Remove. Если пользователь нажимает на любую из этих ссылок и у него нет доступа для выполнения этих действий, я бы хотел, чтобы angular отображал уведомление Access denied toastr.

Мой вопрос: могу ли я каким-то образом использовать перехватчик угловых ответов для поиска результата статуса HTTP 403 (Forbidden) и отображения Access denied toastr, а затем завершить запрос?

Это логика перехватчика responseError:

var responseError = function (rejection) {
    if (rejection.status === 401) {
        return $injector.get('authService').refreshToken().then(function (response) {
            return retryHttpRequest(rejection.config).then(function (response) {
                return response || $q.when(response);
            }, function () {
                $injector.get('$state').go('logout');
                return $q.reject(rejection);
            });
        })
    }
    else if (rejection.status == 400 || rejection.status == 500) {
        notification.error("Unable to process the request due to an error!");
    }
    else if (rejection.status == 403) {
        notification.error("You do not have sufficient permissions!");
    }
    return $q.reject(rejection);
}

person Intrepid    schedule 05.03.2015    source источник
comment
см. мой ответ на этот вопрос "title="можно ли проверить условие перед всеми HTTP-вызовами в angular">stackoverflow.com/questions/28713753/   -  person Callum Linington    schedule 05.03.2015
comment
Похоже, я уже правильно реализовал перехватчик. Это мой код спроектирован неправильно, так как я поместил логику для загрузки заказа не в то место. Дох!   -  person Intrepid    schedule 05.03.2015
comment
Не беспокойтесь, если вы разместите свой код, я тоже могу посмотреть - на ваше усмотрение   -  person Callum Linington    schedule 05.03.2015
comment
Я добавил код для responseError, хотите взглянуть на него?   -  person Intrepid    schedule 05.03.2015
comment
Я бы не стал повторять запрос здесь, я бы $q.reject указал причину повторной попытки запроса и имел бы логику в службе для повторной попытки запроса. Я думаю, что перехватчик должен заниматься только отправкой причин, а не иметь больше $http логики ИМХО   -  person Callum Linington    schedule 05.03.2015
comment
Я получил код retryHttpRequest с другого веб-сайта, который показывает, как реализовать бесшовную аутентификацию с помощью токенов обновления, обнаруживая ошибку 401 и повторяя последний запрос после получения нового токена обновления. Все это работает отлично, и я менее склонен менять этот бит.   -  person Intrepid    schedule 05.03.2015
comment
Можете ли вы прислать мне ссылку - я заинтригован, чтобы увидеть, как это работает!   -  person Callum Linington    schedule 05.03.2015
comment
См. эту ссылку, чтобы узнать, как реализовать простые запросы маркеров обновления. Это поддержка статья, где я нашел это.   -  person Intrepid    schedule 05.03.2015