2013-11-14 2 views
1

지금 유성 응용 프로그램을 작성 중이며 새로운 Iron Router 패키지 (이전에 사용한 라우터 패키지와 반대)에 익숙해졌습니다.Iron Router Route 허용/거부

특정 속성을 가진 사용자 만 액세스 할 수있는 경로 모음이 있습니다. 구체적으로 말하자면, Roles 패키지를 사용하고 있습니다. 지금이 목표를 달성하는 나의 방법은 조건부를 실행하는 before 함수를 정의하고 사용자가 적절한 역할을하지 않으면 로그인 페이지 또는 오류 페이지로 리디렉션하는 것입니다. 다음은 간단한 (coffeescript) 예입니다.

this.route 'home', 
    path: '/' 
    template: 'dashboard' 
    before: -> 
     unless Meteor.userId() 
     this.redirect 'userUnauthorized' 
     do this.stop 

제 질문은이 방법이 더 좋습니까? 권한 설정을 추가하고 모든 경로에 대한 액세스 조건을 작성하는 것과는 대조적으로 해당 권한 세트를 경로에 적용해야하는 것처럼 보입니다.

답변

1

경로에 "이전"을 설정할 수 있습니다. 나는 나의 현재 응용 프로그램에서 역할을 사용하지 않는, 그러나 우리는 세계가 로그인되어 있는지 여부에 따라 리디렉션 사용자입니다

당신은 아마 이런 식으로 뭔가 할 수있는 :.

Router.before(function() { 
    unless(Meteor.userId()) { 
    this.redirect('userUnauthorized'); 
    do (this.stop) 
    } 
}, {except: ['userUnauthorized', 'otherPageUnauthorizedUsersAllowedToSee']}); 

우리는 비슷한 사용을 바로 아래 우리 Router.configure()

+0

하이 스펜서. 접근 방식이 안전합니까? 라우터는 클라이언트에서 사용할 수 있습니다. –

+2

리디렉션에 관계없이 사용자가 클라이언트에 보내는 서식 파일을 보지 못하게 할 수 없습니다. 당신이 말했듯이, 라우터는 클라이언트에서 사용할 수 있습니다. 라우팅이란 UI/UX 유형의 것보다 더 이해할 수 있습니다. 할 수 있고해야 할 일은 사용자가 볼 수 없으며 할 수있는 컬렉션이나 데이터를 사용자에게 보내지 않도록하는 것입니다. 중요한 데이터를 뷰 템플릿에 임베드하는 경우 문제가 있는지 묻습니다. 결국 사용자는 앱의 모든 페이지로 이동할 수 있습니다. 해당 페이지의 렌더링은 해당 사용자 역할/권한을 기반으로합니다. – Spencer