저는 컨트롤러에 주입되는 AnguarJS 서비스에서 REST API를 마무리했습니다. 꽤 표준 맞아. 이제는 그 서비스가 어떤 401 응답도 가로 채고 어떤 식 으로든 로그 아웃이나 재 로그인 프롬프트를 트리거하고 싶습니다. 문제는 서비스가 모든 범위에 액세스 할 수 없다는 것입니다. 그 오류를 방송하는 가장 좋은 방법은 무엇입니까? 저는 몇 가지 아이디어를 생각해 냈습니다. 그러나 Angular에 익숙하지 않은 사람이라면 누구나 저에게 "Angular"방식으로 이것을 말할 수 있는지 궁금해하고 있습니까?AngularJS 컨트롤러/서비스/http 통신
1) 내 AppCtrl이들을 수있는 이벤트 풀로 서비스 작업을 할 수 있습니다. 그러나 이것은 약간 지나치게 복잡해 보입니다. 그래서 :
myService.on('logout', function() {
$scope.isLoggedIn = false;
});
2) 서비스에 $의 rootScope를 주입하고, 서비스가 직접 isLoggedIn
을 수정할 수 있습니다. 그러나 이것은 단지 틀린 것처럼 보입니다. 서비스 서비스 데이터, 컨트롤러가 범위를 제어하고 dom과 함께 명령을 내리는 경우를 명확하게 구분하고 싶습니다.
3) 내 컨트롤러 하나 하나가 거부 된 약속을 볼 수 있으며 이유가 401 오류 인 경우 $ 범위에 도달하여 isLoggedIn
을 false로 설정합니다.하지만이 옵션은 분명히 당황 스럽습니다.
어떤 도움이 필요합니까?
감사합니다.
어디에서 로그 아웃 작업을 수행해야합니까? 사용자에게 로그인 양식이 표시되거나 알림을받는 방법은 무엇입니까? 리디렉션이 있습니까? –
@JoshDavidMiller 좋은 질문입니다. 어디서 그런 일이 일어나야합니다. 모든 것은 한 페이지 앱이므로 리디렉션이 없습니다. 나는'ngSwitch' 또는 앱이나 로그인 화면을 보여주는 것을 제어하는 스코프에'isLoggedIn' 변수를 상상하고 있습니다. 말이 돼? – nicholas