2015-01-08 3 views
0

을로드하고, 내 세션에 속성으로 현재 인증 된 사용자를 설정하는 초기화를 사용하고 있습니다 :내가 엠버 간단한 인증을 사용하고

Session.reopen({ 
    setCurrentUser: function() { 
    var id = this.get("user_id"); 
    var self = this; 

    if (!Ember.isEmpty(id)) { 
     return container.lookup("store:main").find("user", id).then(function(user) { 
     self.set("currentUser", user); 
     }); 
    } 
    }.observes("user_id") 
}); 

그것을인가 초기 앱 전환이 끝나기 전에 라우터가 currentUser으로 설정 될 때까지 기다릴 수 있습니까? 앱을 부팅하자마자 특정 구성 요소가 session.currentUser에 액세스 할 수있게하려고합니다.

답변

0

나는 비슷한 문제를 해결했으며 약속으로 'AuthController'(세션과 유사한 객체)의 'user'필드를 설정하기로 결정했습니다. 그런 다음, 필요한 모든 곳에서 그 필드를 호출하고 약속이 성립 될 때까지 기다립니다. 이 같은 기본적

App.SomeRoute = Em.Route.extend({ 
    beforeModel: function(transition) { 
     var auth = this.controllerFor('auth'); 

     if (!auth.get('isLogged')) { 
      transition.abort(); 
      auth.set('abortedTransition', transition); 

      auth.get('user') 
       .then(function() { 
        transition.retry(); 

        auth.set('abortedTransition', null); 
       }) 
       .fail(function() { 
       // transit to index or something like that 
       }); 
     } 

     return true; 
     } 
}) 

, 그 사용자가 인증된다 직후 이러한 전환을 사용자가 우리의 시스템에 로그인되어 있지 않은 경우, 전류의 전환을 낮추며 시도.

이 접근법을 상황에 맞게 적용 할 수있을 것입니다.