현재 AngularJS 1.3에서 로그인 흐름을 작성 중입니다. 내 문제는 $ http 호출에서 반환되는 약속은 '.then'내부의 코드를 해결하지 않는다는 것이다.
나는 잘못된 사용자 이름이나 암호를 입력했을 때 반환되는 401 오류를 처리하기 위해 서버에서 오는 오류 메시지를 처리하기 위해 노력하고 있습니다. 그러나 401이 반환되면 .the는 절대로 해결되지 않으며 그 내부의 코드는 실행되지 않습니다.
의 범위에 로그인 기능과 로그인 폼의 컨트롤러를 다음과 같이 :
$scope.login = function() {
$scope.authError = null;
// Try to login
var promise = session.login($scope.user);
promise.then(function(loggedIn) {
// THIS CODE NEVER RUNS
if (!loggedIn) {
$scope.authError = localizedMessages.get('login.error.invalidCredentials');
}
}, function(x) {
$scope.authError = localizedMessages.get('login.error.serverError', { exception: x });
});
};
나는 로그인을 담당 세션 공장이 다음과 같이
관련 코드는 및 기타 세션을 기반으로합니다. 로그인 코드는 다음과 같습니다.
login: function(credentials) {
var $http = $injector.get('$http');
var url = ENV.apiEndpoint + "/sessions";
var newSession = $http.post(url, credentials);
return newSession.then(function(data) {
session.set(data.token);
//THIS CODE ONLY RUNS ON A SUCCESS RESPONSE
if(session.isAuthenticated()) {
closeLoginModal(true);
}
return session.isAuthenticated();
});
}
문제가있는 코드에 주석을 추가했습니다. 나는이 코드가 왜 작동하지 않는지에 관해서는 손해보고있다. 약속에 대한 나의 이해에서, '그 때'는 응답이 무엇이든 오류의 성공 여부에 관계없이 해결해야합니다.
나는 인터셉터를 실행 중이지만, 최종 결과에 아무런 운이 없도록 시도해 보았습니다.
내가 누락 된 항목이 있습니까?
401이 '오류'(또는 각도로 불리는 것이 무엇이든)로 해결되지 않습니까? 오류 기능이 실행됩니까? –
오류를 해결할 수 있지만 올바른 경우 .then 약속이 성공 또는 오류 여부에 관계없이 문제를 해결해야합니다. 오류가 있으면 컨트롤러의 .then 두 번째 기능을 호출해야합니다. 그게 내가 잘못한거야? – Octothorpe
... 그래서 해결하고 오류 기능을 실행 중입니다. HTTP 호출로 인해 HTTP 오류 코드가 발생하므로 올바른 것처럼 보일 수 있습니다. 어쩌면 당신은 잘못 된 일을 설명하고있을 것입니다 : 오류 기능이 호출되고 있습니까? –