2017-10-09 8 views
0

액세스를 제한하려는 MeteorJs 앱에 다운로드 경로가 있습니다. 경로 코드는 다음과 같습니다.Meteor JS (Iron Router) - 서버 경로에 대한 액세스 제한

Router.route("/download-data", function() { 
var data = Meteor.users.find({ "profile.user_type": "employee" }).fetch(); 
var fields = [...fields]; 

var title = "Employee - Users"; 

var file = Excel.export(title, fields, data); 

var headers = { 
    "Content-type": "application/vnd.openxmlformats", 
    "Content-Disposition": "attachment; filename=" + title + ".xlsx" 
}; 

this.response.writeHead(200, headers); 
this.response.end(file, "binary"); 
}, 
{ where: "server" } 
); 

경로가 자동으로 파일을 다운로드합니다. 현재 작동하지만 경로에 대한 액세스를 제한하려고합니다. 관리자 만 다운로드 할 수 있기를 바랍니다.

나는

Router.onBeforeAction(
    function() { 
    //using alanning:roles 
    if(Roles.userIsInRole(this.userId, "admin"){ 
    console.log('message') //testing 
    } 
    }, 
    { 
    only: ["downloadData"] 
    } 
); 

다음과 같은 onBeforeAction 후크를 만든 및 onBeforeAcion 후크 영향

또한

내가 눈치도 this.userId도를 고려하지 않습니다

//code above 
this.response.writeHead(200, headers); 
this.response.end(file, "binary"); 
}, 
{ where: "server", name: "downloadData" } 
); 

아래로 내 경로 이름 Meteor.userId 경로에서 작동

답변

1

서버 측 훅의 경우 경로와 마찬가지로 {where : "server"} 부분을 포함하도록 onBeforeAction이 필요합니다.

또한 철분 : 라우터가 라우팅에서 서버 측 사용자 인증을 구현 한 적이 없다고 생각합니다. 인증 된 라우트에 액세스 할 수있는 mhagmajer : server-router와 같은 더 큰 기능을 사용하여 서버 라우팅과 관련된 패키지를 체크인 할 수 있습니다.

https://github.com/mhagmajer/server-router