Я пытаюсь изучить AngularJS, создав небольшой webapp с Spring MVC-Spring Security-AngularJS. Моя UserDetailsService выдает исключение UserNotFoundException во время входа в систему. Но я не знаю, как обрабатывать исключения в Angular. Я попытался Google, но не смог найти простые, полные примеры обработки исключений.
Это часть моего модуля проверки подлинности:
$http.get('user', {
headers : headers
}).success(function(data) {
if (data.name) {
auth.authenticated = true;
} else {
auth.authenticated = false;
}
callback && callback(auth.authenticated);
$location.path(auth.path==auth.loginPath ? auth.homePath : auth.path);
}).error(function() {
auth.authenticated = false;
callback && callback(false);
});
Как я могу получить и поймать это конкретное исключение UserNotFoundException внутри функции обратного вызова ошибки?
Я предлагаю создать @ExceptionHandler
в вашем контроллере, а в вашем UserNotFoundException
добавить еще два поля (errorMessage
и errorCode
), например. то в вашем угловом errorCode
вы можете проверить, какой номер errorCode
.
Хорошие статьи:
Для расширенной обработки ошибок я рекомендую это поведение: https://github.com/jirutka/spring-rest-exception-handler
Вот пример скрипки с вашим случаем: http://jsfiddle.net/bkUEu/1044/
В вашем приложении angularjs попытайтесь использовать это
$http.get('user', {
headers : headers
}).then(function(data) {
if (data.name) {
auth.authenticated = true;
} else {
auth.authenticated = false;
}
callback && callback(auth.authenticated);
$location.path(auth.path==auth.loginPath ? auth.homePath : auth.path);
}).catch(function() {
auth.authenticated = false;
callback && callback(false);
});
Используйте функцию then и catch вместо успеха и ошибки.