Как перехватить / обработать исключения бэкэнда в AngularJS

0

Я пытаюсь изучить 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 внутри функции обратного вызова ошибки?

Теги:
spring-security
spring-mvc

2 ответа

2

Я предлагаю создать @ExceptionHandler в вашем контроллере, а в вашем UserNotFoundException добавить еще два поля (errorMessage и errorCode), например. то в вашем угловом errorCode вы можете проверить, какой номер errorCode.

Хорошие статьи:

Для расширенной обработки ошибок я рекомендую это поведение: https://github.com/jirutka/spring-rest-exception-handler

Вот пример скрипки с вашим случаем: http://jsfiddle.net/bkUEu/1044/

  • 0
    Я посмотрю на это, когда буду дома ... выглядит очень многообещающе. Спасибо!
  • 0
    нет проблем, если вам нужна дополнительная помощь, я здесь. Не стесняйтесь обратиться ко мне.
0

В вашем приложении 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 вместо успеха и ошибки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню