Я хочу перенаправить пользователя на страницу входа, если другой пользователь зарегистрировался с тем же именем пользователя.
Я могу понять, является ли запрос ajax с
boolean isAjax = "XMLHttpRequest".equals(httpRequest.getHeader("X-Requested-With"));
Если запрос ajax, я отправляю сообщение об ошибке клиенту и перенаправляю его с location.href= 'to the login page'
. Если это не так, я перенаправляю его на сервер с помощью httpResponse.redirect("to the login page")
.
Но некоторые запросы отправляются с $ http angularJS. Я не могу понять, если он отправлен таким образом, и я не могу перенаправить на страницу входа.
Как я могу сделать это правильно?
ПРИМЕЧАНИЕ. Я должен делать это на стороне сервера или на стороне клиента глобальным способом, потому что есть много мест, отправляющих запросы с $ http угловой.
Спасибо за вашу помощь.
Вы можете использовать responseInterceptor в AngularJS через службу $ httpProvider и идентифицировать ответ перед тем, как отправляться вперед.
Ниже приведен пример кода, который использует логику, чтобы понять, нормально ли ответ. Если возникает ошибка, скрыть загрузчик, вместо этого показать его при отказе ответа.
.config(function ($httpProvider) {
$httpProvider.responseInterceptors.push('mrnHttpInterceptor');
var spinnerFunction = function (data) {
//$('.msloader').show();
return data;
};
$httpProvider.defaults.transformRequest.push(spinnerFunction);
})
.factory('mrnHttpInterceptor', function ($q) {
return function (promise) {
return promise.then(function (response) {
return response;
}, function (response) {
//When Error.... we need to hide the loader
$('.msloader').hide();
return $q.reject(response);
});
};
})