2015-01-26 5 views
1

인증 스키마와 관련하여 정적 URL이있는 경우 각도가 큰 보안 문제를 일으킬 수 있습니다. 등록되지 않은 사용자가 페이지를 방문하면 안전한 위치로 리디렉션되기 전에 내용이 잠시 동안 화면에서 깜박입니다. 이 문제를 발견하고 광범위하게 검색 한 다음 $ routeConfig의 resolve 속성을 결정했습니다. 불행히도, 내가하는 일과 상관없이 작동하지 않습니다. 아래 코드 : 아무리인증 체크를위한 템플릿 렌더링 지연 각도

isLoggedin : function() { 
     return $http.get("users/session_check").then(function(result) { 
      if (result.data) { 
       if (user == undefined) 
       { 
       placeholderService.populatePlaceholders(); 
       user = result.data; 
       } 
       return result.data; 
      } else { 
       return $q.reject("Please log in."); 
      } 
      }); 
    } 

무엇을보기 깜박 :

$routeProvider.when('/dashboard/:id', { 
    templateUrl: 'js/partials/dashboard.html', 
    controller:'DashCtrl', 
    access: access.user, 
    resolve: { 
     login: function(authService) { 
     var promise = authService.isLoggedIn(); 
     promise.then(function(data){ 
     // We're in successfully 
     }).catch(function(err){ 
      // ew, go away, redirect to login page 
      window.location = "login"; 
     }); 
     } 
    } 
}); 

AuthService.isLoggedIn는()처럼 보인다. 나는 그 페이지에 아무것도 없다. 나는 그 밖의 무엇을해야할지 모르지만, 이것은 완전히 분노하게되었습니다.

+1

아마 기억이 잘 안나지만, 그 기능은 약속을 되 돌리는 것으로 생각됩니다. (예 : put return return; $ routeProvider의 로그인 함수 끝 부분). – mgilson

+0

@mgilson 네, 그게 그 X_X – Siraris

+0

오. 나는 그것을 시도하지 않고 대답으로 넣을만큼 자신감이 부족했다 :-). 나는 대답으로 그것을 넣었다. – mgilson

답변

1

$ routeProvider에 전달하는 함수는 return을 약속해야합니다. 예를 들면 : 나는 올바르게 기억 주입-수있는 서비스로 컨트롤러에 (이 경우에있는 끝으로

$routeProvider.when('/dashboard/:id', { 
    templateUrl: 'js/partials/dashboard.html', 
    controller:'DashCtrl', 
    access: access.user, 
    resolve: { 
     login: function(authService) { 
     var promise = authService.isLoggedIn(); 
     return promise.then(function(data){ 
      // We're in successfully 
      return data; // This gets injected as "login" 
     }).catch(function(err){ 
      // ew, go away, redirect to login page 
      window.location = "login"; 
     }); 
     } 
    } 
}); 

그리고, 값이 약속이 fulfolled 있는지의 login 서비스는 약속이 성취됩니다 뭐든 와).