Обработка ошибки 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
}
});