1

Ниже приведен код, который я использую. Я получаю сообщение об успешном подтверждении аутентификации, если базовое auth успешно завершено, но предупреждение else «Ошибка аутентификации» никогда не отображается, когда учетные данные неверны. Я не использую никаких маршрутов, и мне не нужно использовать перехватчики. Есть ли способ получить ошибки 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"); 
    } 
    }); 

}; 
+0

делает 'console.log ("Received Error");' получение печатных –

+0

Неа. Он тоже туда не идет. –

+0

Вы хотите сказать, что функция ошибки внутри службы не срабатывает? –

ответ

2

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

error(function(data, status, headers, config) { 
    if(status === 401){ 
     // Add your code here 
    } 
    }); 
Смежные вопросы