Обработка ошибки AngularJS с кодом 401 без перехватчиков?

Ниже приведен код, который я использую. Я получаю оповещение об успешном завершении проверки подлинности, если базовая проверка подлинности завершается успешно, но предупреждение "Сбой проверки подлинности" никогда не отображается, если учетные данные неверны. Я не использую никаких маршрутов, и у меня нет необходимости использовать перехватчики. Есть ли способ получить ошибки 401 без использования перехватчиков?

this.authorize = function(request, callbackFunc) {
  var encodedString = btoa(request.userName + ":" + request.password);
  var basicAuthString = 'Basic ' + encodedString;
  var requestObject = {
    location: '40005'
  };
  var req = {
    method: this.method,
    crossDomain: true,
    url: this.loginURL,
    data: requestObject,
    headers: {
      'Authorization': basicAuthString,
      'Content-Type': 'application/json',
      'Accept': '*/*',
      'apiKey': ''
    }

  };

  $http(req)
    .success(function(response) {
      callbackFunc(response, "success");
    })
    .error(function(response) {
      console.log("Error Received");
      callbackFunc(response, "error");
    });
};

В контроллере:

$scope.Login = function() {

  AuthenticationService.authorize($scope.LoginRequest, function(response, responseCode) {
    if (responseCode === "success") {

      alert("Authentication Success");
    } else {
      alert("Authentication Failed");
    }
  });

};

1 ответ

Как описано в документации AngularJS для $ http, вызов $ http возвращает обещание с методом ошибки, в котором в качестве одного из параметров указан код (номер) состояния. Вы можете проверить статус 401 там:

error(function(data, status, headers, config) {
    if(status === 401){
        // Add your code here
    }
  });
Другие вопросы по тегам