2012-05-30 2 views
3

라우팅 및 푸시 스테이트와 함께 Ember.js에 대한 의견이있는 사람이 있는지 궁금합니다. 인증을위한Ember.js 인증, 푸시 스테이트 및 라우팅

전형적인 엠버 예는 다음과 같습니다 사용자가 항상 루트 URL로 전송되는 경우 작동합니다

aStateManager = Em.StateManager.create({ 
    initialState: 'unauthenticated', 
    authenticated: Em.State.create({}), 
    unauthenticated: Em.State.create({ 
     authenticate: function(stateManager, context){ 
     stateManager.goToState('authenticated') 
     } 
    }) 
    }) 

    aStateManager.send('authenticate') 

. 하지만 사용자가 '/ api/resource/1'과 같은 주소 표시 줄에 URL을 입력하면 사용자가 각 상태에서 인증되었는지 여부를 알 수있는 방법이 있습니까?

내가 찾고있는 것은 before_filter와 같은 레일입니다.

이 일반적인 시나리오에 대한 해결책을 제시 한 사람이 있습니까?

답변

1

우리가 모든 종류의 인증과 관련하여 직면하게 될 문제는 사용자가 모든 모델에 대한 완전한 액세스 권한을 가지며 사용자가 이전에 가지고 있지 않은 권한을 부여 할 수 있다는 것입니다. 그리고 매번 서버에 접속하는 것은 고통 스러울 것입니다.

내가 마음의 맨 위에서 생각할 수있는 한 가지 해결책은 freezable mixin과 isDirty 플래그를 사용하는 것입니다. 우리는 DS 모델 (ember 데이터를 사용하는 경우)로 사용자에 대한 권한을 가질 수 있으며이를 고정으로 정의 할 수 있습니다. 이제 우리는 model이 지저분한 지 (예 : 변경되었는지) 검사하는 permission check mixin을 생성합니다. 또한 코드의 다른 모든 부분에서 고정 상태를 존중합니다.

물론 다른 여러 사용 사례는 생각하지 못했지만 이는 중요한 출발점이되어야합니다.

+0

저는 freezable mixin을 알지 못했습니다. 나는 그것이 좋은 출발점이라고 생각한다. – dagda1

+0

유일한 문제는 언어 수준에서 적용 할 수 없다는 것입니다. 앱은 고정 된 상태를 존중해야합니다. 그래서 우리는 isDirty 플래그를 사용할 것을 제안했습니다. –

+0

서버에서 필터를 사용하여 클라이언트로 보내는 것을 제한하는 경우에는 문제가되지 않습니다. active_model_serializers'scope'를 살펴보십시오. –