2013-10-27 5 views
0

나는 이것에 대해 많은 검색을 해왔지만 당신이 말할 수있는 만족스러운 대답이나 해결책을 찾을 수 없었습니다.Ember 클라이언트 측 인증, 경로 인증

나는이 엠버 응용 프로그램 (http://jsbin.com/aHiVIwU/28#)을 가지고 있습니다.

사용 사례가 매우 간단합니다. 사용자가 인증을받은 후에 만 ​​전체 앱을 보여주고 싶습니다. 내가 볼 수있는 Ember Data를 사용하지 않기 때문에 인증은 $.ajax까지도 가능합니다. 내가 리소스를 매핑 할

다음
<script type="text/x-handlebars" id="login"> 
      <h1>Login</h1> 
      {{view Ember.TextField valueBinding="username"}} 
      {{view Ember.TextField type="password" valueBinding="password"}} 
      <button {{action 'login' class="btn"}}>Login</button> 
</script> 

내가 잘못 아니에요, 난이 같은 로그인 페이지 템플릿을 것,

App.Router.map(function() { 
    this.resource('login'); 
}); 

그리고는 해당 컨트롤러가있을 것입니다 권리?

App.LoginController = Ember.ObjectController.extend({ 
}); 

하지만이 갇히지하고있는 점은, 어떻게 사용자 후 전체 응용 프로그램이 인증됩니다 제 만 로그인 템플릿을 표시합니다? 나는 이것에 대한 약간의 설명 & 도움을 주시면 감사하겠습니다.

답변

2

알렉스가 에버에서 라우터의 facelift를 사용하여 자신의 요청에 대해 이야기 한 것보다 더 잘 말할 수는 없습니다. '의 인증 된 경로에 대한 로그인 양식으로 리디렉션하고 나중에 원래 전환을 다시 시도하려면 어떻게해야합니까? '

는 사용자가 현재 전환을 절약 할 수 인증을 필요로하는 자원의 루트 경로에서 기본적으로

https://gist.github.com/machty/5647589

, 로그인 노선 전환, 그들은이 인증 한 후 후 이전을 다시 시작 전이.

그는 자신이 인증을 필요로하는 모든 노선에 부착 할 수있는 믹스 인을 만든 것 아주 간단한 예제를 포함하고 코드를 등

http://jsbin.com/axarop/54/edit

App.NeedsAuthMixin = Ember.Mixin.create({ 
    beforeModel: function(transition) { 
    // We're using beforeModel here to 
    // make sure the user is authenticated. 
    var loginController = this.controllerFor('login'); 
    if (!loginController.get('hasLoggedIn')) { 
     alert('you must log in!'); 
     loginController.set('afterLoginTransition', transition); 
     this.transitionTo('login'); 
    } 
    } 
}); 

App.ArticlesRoute = Ember.Route.extend(App.NeedsAuthMixin); 

App.LoginRoute = Ember.Route.extend({ 
    events: { 
    login: function() { 
     this.controller.set('hasLoggedIn', true); 
     var savedTransition = this.controller.get('afterLoginTransition'); 
     if (savedTransition) { 
     this.controller.set('afterLoginTransition', null); 
     savedTransition.retry(); 
     } 
    } 
    } 
}); 
+1

실제로 Yehuda의 JSBin (http://jsbin.com/eQOZoGe/329/edit)을 사용하기로 결정했습니다. 훨씬 간단하고 사용하기 쉽기 때문입니다. 나는 또한 내가 너희들과 분명히 공유 할 나의 다른 해결책을 생각해 낼 수 있기를 바라고있다. :) – user1601973

0

테이크를 복제 할 필요가없는 것입니다 http://www.embercasts.com/에 클라이언트 측 인증 화면이 나타납니다. 그들은 kingpin2k가 언급 한 예제를 만든 동일한 녀석에게서 나온 것이지만, 완전한 해결책을 제공합니다.

관련 문제